[英]Java CompletableFuture: Trying to run two void methods as CompletableFuture and block until both complete
我正在尝试异步运行两个 void method1 和 method2,然后阻塞代码,直到这两种方法都完成。
这能达到吗?
CompletableFuture<Void> future1 = CompletableFuture.runAsync(() -> method1());
CompletableFuture<Void> future2 = CompletableFuture.runAsync(() -> method2());
CompletableFuture.allOf(future1, future2).join();
我认为代码CompletableFuture.allOf(future1, future2).join();
应该工作正常。 你可以试试这个,你有什么问题吗?
或者你可以使用类似的东西:
Arrays.asList(future1,future1).forEach(Future::get);
为什么不使用专用方法runAsync
呢?
public static void main(String[] args) {
CompletableFuture<Void> future1 = CompletableFuture.runAsync(() -> method1());
CompletableFuture<Void> future2 = CompletableFuture.runAsync(() -> method2());
CompletableFuture<Void> compound = CompletableFuture.allOf(future1, future2);
compound.join();
System.out.println("compound done");
}
是的,您的compound
将在另一个线程(上面示例中的main
)上“加入”,因此compound done
消息仅在两种方法执行后才会打印。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.