2017-04-10 11 views

答えて

2

CompletableFuture.allOf(…)は、実際にはよりもsuccessfulAsList()に近い。

実際、allOf()は、すべての指定された先物が完了した後にのみ完了します。値または例外があります。その後、各未来を検査して、どのように完了したかを確認することができます(たとえば、thenAccept()/thenApply())。

allAsList()入力先が失敗するとすぐにエラーが発生するため、には相当するものがありません。しかし、あなたがallOf()allOf()によって返された未来はすぐに失敗するだろうexceptionally()で、各入力将来の連鎖の組み合わせでそれを実現することができます。

CompletableFuture<String> a = …, b = …, c = …; 
CompletableFuture<Void> allWithFailFast = CompletableFuture.allOf(a, b, c); 
Stream.of(a, b, c) 
    .forEach(f -> f.exceptionally(e -> { 
     allWithFailFast.completeExceptionally(e); 
     return null; 
    })); 
+0

おかげディディエが、それは便利です。 – Miket

関連する問題