CompletableFuture.allOf()与anyOf()

时间:2019-01-28 04:12:51

标签: java javadoc completable-future

在javadocs中,

AllOf()
  

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

AnyOf()
  

如果异常完成,则返回的CompletableFuture也将   这样做,通过CompletionException持有此异常作为其   原因。

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

问题在于短语

  

返回CompletableFuture也是如此

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

1 个答案:

答案 0 :(得分:2)

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

基本上,anyOf的异常将始终来自已完成的未来,而allOf的异常可能源自任何未来。