首页 > 解决方案 > CompletableFuture.allOf() 与 anyOf()

问题描述

从javadocs,

AllOf()

如果任何给定的CompletableFuture 异常完成,则返回的 CompletableFuture 也会这样做,并且 CompletionException 将此异常作为其原因。

AnyOf()

如果它异常完成,则返回的 CompletableFuture 也会这样做,并且 CompletionException 将此异常作为其原因。

这是否意味着当任何 CompletableFuture 抛出异常时 allOf() 和 anyOf() 的行为方式相同?

问题在于这句话

返回的 CompletableFuture 也这样做

出现在这两种方法中,但没有明确提及何时发生异常。

标签: javajavadoccompletable-future

解决方案


不完全的。anyOf给出任一期货完成的结果,无论是否异常。allOf在所有通过的期货完成之前不会完成,包括异常完成的期货。如果任何期货异常完成,第一个异常将反映在结果中。

基本上,异常 fromanyOf将始终来自完成的一个未来,而allOf它可能来自任何一个。


推荐阅读