Gil*_*ili 10 java completable-future
CompletableFuture.allOf()
我想实现和的混合,CompletableFuture.anyOf()
其中一旦所有元素成功完成,返回的 future 就会成功完成,或者只要任何元素异常完成,它就会异常完成(具有相同的异常)。在多个元素失败的情况下,返回其中任何一个的异常就足够了。
我有一个任务需要聚合CompletableFuture
s 列表返回的子结果,但是一旦其中任何一个失败,该任务就应该停止等待。我知道子任务将继续运行,这没关系。
我发现等待未来的列表最初看起来像是一个重复的问题,但接受的答案使用CompletionService
需要Callable
或Runnable
作为输入。我正在寻找一种将已运行的CompletionStage
s 作为输入的解决方案。
Did*_*r L 10
这个问题实际上与Replace Futures.successfulAsList with Java 8 CompletableFuture?非常相似。
\n\n虽然问题不完全相同,但相同的答案(来自我自己)应该可以满足您的需求。
\n\n您可以通过组合allOf()
和链接每个输入 future 来实现此目的,这exceptionally()
将使返回的 futureallOf()
立即失败:
CompletableFuture<String> a = \xe2\x80\xa6, b = \xe2\x80\xa6, c = \xe2\x80\xa6;\nCompletableFuture<Void> allWithFailFast = CompletableFuture.allOf(a, b, c);\nStream.of(a, b, c)\n .forEach(f -> f.exceptionally(e -> {\n allWithFailFast.completeExceptionally(e);\n return null;\n }));\n
Run Code Online (Sandbox Code Playgroud)\n
归档时间: |
|
查看次数: |
7575 次 |
最近记录: |