結果のコレクションなどを返さないとCompletableFuture.allOf
宣言されているのはなぜですか? returnCompletableFuture<Void>
にするのは良い考えだと思いますが、これら2つのメソッドが接続されているので、それらが返すものについて混乱しています。CompletableFuture.anyOf
CompletableFuture<Object>
4908 次
2 に答える
7
anyOf
CompletableFuture
完了がトリガーされた特定の結果が何であったかをどうにかして伝える必要がありますanyOf
。allOf
どの先物が完了したかを知っているので、それは必要ありません-それらすべて.
allOf
(同様にanyOf
) すべての先物が同じ型を持つ必要はありません。したがって、コレクションの未来を返す場合、それはおそらくあなたが望むものではないコレクションでObject
なければなりません。
コレクションの未来を本当に返したい場合はallOf
、独自に書くのはかなり簡単です。
public static CompletableFuture<List<Object>> myAllOf(CompletableFuture<?>... futures) {
return CompletableFuture.allOf(futures)
.thenApply(x -> Arrays.stream(futures)
.map(f -> (Object) f.join())
.collect(toList())
);
}
この問題のタイプ セーフ バージョンがあり、特定のタイプのフューチャーのコレクションを同じタイプのコレクションのフューチャーに変換する必要がある場合は、いくつかの例についてこの質問を参照してください: List<Future> to Future<List> シーケンス
于 2015-12-04T08:37:46.897 に答える