带有依赖参数的java completablefuture.allOff

带有依赖参数的java completablefuture.allOff,java,java-8,completable-future,Java,Java 8,Completable Future,此代码是否有效地使用了CompletableFuture.allOf(…) CompletableFuture f1=CompletableFuture.supplyAsync(()->“f1”); CompletableFuture f2=CompletableFuture.SupplySync(()->“f2”); 完全未来f3=f1。然后组合同步(f2,(s1,s2)->s1+s2); CompletableFuture all=CompletableFuture.allOf(f1、f2、

此代码是否有效地使用了
CompletableFuture.allOf(…)

CompletableFuture f1=CompletableFuture.supplyAsync(()->“f1”);
CompletableFuture f2=CompletableFuture.SupplySync(()->“f2”);
完全未来f3=f1。然后组合同步(f2,(s1,s2)->s1+s2);
CompletableFuture all=CompletableFuture.allOf(f1、f2、f3);
all.join();
在javadoc中:

这种方法的应用之一是等待集合的完成 在继续一项计划之前,指独立的可完成期货,如:
CompletableFuture.allOf(c1,c2,c3).join()

但是在我的例子中,依赖论点又如何呢?如果它无效,exmaple会出什么问题?为什么



更新:也许这对某些人有帮助,这个故事以jdk-8在completable future中的bug结束

传递给
allOf()
completable Futures
没有限制,但您有责任确保它们最终都完成


这意味着,例如,您用
new
实例化的
complete()

您可以想到的
allOf
被阻止,直到所有传递的
CompletableFuture
都完成为止。@holi java那么,您是说它的有效用法吗?我问这个问题是因为我有一个更复杂的例子,当所有传递到allOf的可完成未来都处于完成状态时,有时join在allOf forever上被阻止。因此,我试图弄清楚我是否允许使用allOf,而这不是jdk文档中的直接答案。如果你对
allOf()
有问题,你应该发布一个复制它的帖子。否则,“是的,它是有效的”答案对你没有帮助。你说得不太对,因为我不确定这是“allOf问题”还是误用。。。医生对我来说不清楚
CompletableFuture<String> f1 = CompletableFuture.supplyAsync(() -> "f1");
CompletableFuture<String> f2 = CompletableFuture.supplyAsync(() -> "f2");
CompletableFuture<String> f3 = f1.thenCombineAsync(f2, (s1, s2) -> s1 + s2);
CompletableFuture<Void> all = CompletableFuture.allOf(f1, f2, f3);
all.join();