在研究vertx线程模型的时候我开始注意到在vertx内部提供给开发者的多数异步api中用到了CompletableFuture或者Promise或者Future。以前也用过CompletableFuture和Futrue等,但当时没有想过它执行时的线程情况,于是写了个测试类用于了解它:
public class VertxTest {
Logger logger = LoggerFactory.getLogger(VertxTest.class);
@Test
public void test() {
System.out.println(Thread.currentThread().getName() + " | start");
testAsync(1000, result -> {
System.out.println(Thread.currentThread().getName() + " || " + result);
});
CompletableFuture future1 = testAsync(10000);
future1.thenAccept(result -> {
System.out.println(Thread.currentThread().getName() + "|||" + result);
});
System.out.println(Thread.currentThread().getName() + "|||| end..." );
while (true) {}
}
private void testAsync(int max, Handler<AsyncResult<Float>> handler) {
Thread thread = new Thread(() -> {