我有两个服务电话:
String call1() { ... return "ok"; }
void call2(String) { ... }
我知道带有回调的 CompletableFuture 的基本方法就像
CompletableFuture<Void> future = CompletableFuture
.supplyAsync(() -> call1())
.thenAccept(s -> call2(s));
future.join();
如果我将两个链接的 CompletableFuture 分开会怎样,例如:
CompletableFuture<String> future1 = CompletableFuture.supplyAsync(() -> call1());
CompletableFuture<Void> future2 = future1.thenAccept(s -> call2(s));
future1.join(); // will call2 be executed at this time?
这与在 future2 上调用 join() 有什么不同:
CompletableFuture<String> future1 = CompletableFuture.supplyAsync(() -> call1());
CompletableFuture<Void> future2 = future1.thenAccept(s -> call2(s));
future2.join();
如果我在两个期货上都调用 join() 怎么办?
CompletableFuture<String> future1 = CompletableFuture.supplyAsync(() -> call1());
CompletableFuture<Void> future2 = future1.thenAccept(s -> call2(s));
future1.join();
future2.join();
从运行我的示例代码来看,它们似乎都是一样的。但我觉得某处可能有问题。谢谢!
牧羊人nacy
肥皂起泡泡
相关分类