Eve*_*0id 6 java concurrency java-8 completable-future
为什么CompletableFuture.allOf
声明为CompletableFuture<Void>
和不返回结果集合或其他东西?我认为CompletableFuture.anyOf
返回是个好主意CompletableFuture<Object>
,但我看到这两种方法相互关联,所以我对它们返回的内容感到困惑.
anyOf
必须以某种方式告诉你具体CompletableFuture
完成触发的结果是什么anyOf
.如果allOf
因为你知道哪些期货已经完成 - 那就完全没有必要了.
allOf
(同样anyOf
)并不要求所有期货都具有相同的类型.因此,如果要回归收藏的未来,它必须是一个集合,Object
可能不是你想要的.
如果你真的想要allOf
回归集合的未来,那么编写自己的集合非常简单:
public static CompletableFuture<List<Object>> myAllOf(CompletableFuture<?>... futures) {
return CompletableFuture.allOf(futures)
.thenApply(x -> Arrays.stream(futures)
.map(f -> (Object) f.join())
.collect(toList())
);
}
Run Code Online (Sandbox Code Playgroud)
如果您有此问题的类型安全版本并且需要将某种类型的期货集合转换为该类型的集合的未来,请参阅此问题以获取几个示例:List <Future> to Future <List> sequence
归档时间: |
|
查看次数: |
2979 次 |
最近记录: |