Java 如何转换集合<;完全未来<;X>&燃气轮机;完成未来<;收藏<;X>&燃气轮机;不打电话加入或获取?
给出了一系列的未来Java 如何转换集合<;完全未来<;X>&燃气轮机;完成未来<;收藏<;X>&燃气轮机;不打电话加入或获取?,java,concurrency,completable-future,Java,Concurrency,Completable Future,给出了一系列的未来 final Collection<CompletableFuture<X>> futures = ...; final CompletableFuture<Collection<X>> joined = ??? final Collection futures=。。。; 最终可完成的未来加入=??? 如何在不调用join的情况下为所有值组合在一起的集合生成未来?解决方案是 将集合转换为集合 使用CompletableFut
final Collection<CompletableFuture<X>> futures = ...;
final CompletableFuture<Collection<X>> joined = ???
final Collection futures=。。。;
最终可完成的未来加入=???
如何在不调用join
的情况下为所有值组合在一起的集合生成未来?解决方案是
集合
转换为集合
CompletableFuture.completedFuture(Collections.emptyList())
作为初始值final CompletableFuture joined=
期货
.stream()
.map(f->f.thenApply(值->(集合)集合.singletonList(值)))
.减少(
CompletableFuture.completedFuture(Collections.emptyList()),
(f,g)->
f、 然后撰写(
xs->g.tenapply(
ys->流
。of(xs,ys)
.flatMap(集合::流)
.collect(收集器.toList())
)
);
您将这些单独的期货组合在一起的逻辑是什么?我的意思是,如果其中一个CompletableFuture
失败或超时,它将如何影响组合的CompletableFuture
?这是一个很好的方法,您在这里展示的内容与此btw的问题几乎相同,就是说thencomose/thenApply
可以在main
线程中轻松执行,但是我认为这看起来很不错。