我有一段带有两个CompletableFuture
的Java代码,如下所示:
CompletableFuture<Boolean> future1 = CompletableFuture.supplyAsync(() ->
doThing1(withThis));
CompletableFuture<Boolean> future2 = CompletableFuture.supplyAsync(() ->
doThing2(withThat));
我想比赛这两个CompletableFuture
并获取第一个结果布尔值并将其存储在变量中。但是,我还要确保未来的运行时间不会超过60秒(尽管这是不必要的)。然后我想确保这两个CompletableFuture
都被杀死,我的程序只在主线程上恢复。
我怎样才能简单可靠地将其拉下来?或者,我是否使用了错误的工具来完成手头的工作?
答案 0 :(得分:0)
您可以使用CompletableFuture.anyOf()
。然后调用get
等待执行。
CompletableFuture<Object> future3 = CompletableFuture.anyOf(future1, future2);
Boolean result = (Boolean) futur3.get();
return result;