Java 8でCompletableフューチャーを使用しており、受け取ったパラメーターに基づいて、副作用のある複数のタスクを並行して実行し、それらの「結合された」フューチャーを返すメソッド( CompletableFuture.allOf()
)を使用するか、何もせず、すでに完了しているフューチャーを返します。
ただし、allOf
は_CompletableFuture<Void>
_を返します。
_public static CompletableFuture<Void> allOf(CompletableFuture<?>... cfs)
_
そして、すでに完了しているフューチャーを作成する唯一の方法は、値を期待するcompletedFuture()
を使用することです。
_public static <U> CompletableFuture<U> completedFuture(U value)
_
指定された値で既に完了している新しいCompletableFutureを返します。
Void
はインスタンス化できないため、タイプ_CompletableFuture<Void>
_のすでに完成したフューチャーを作成する別の方法が必要です。
これを行う最良の方法は何ですか?
Void
はインスタンス化できないため、CompletableFuture<Void>
はnull
結果でのみ完了できます。これは、join()
を正常に完了すると、allOf()
によって将来が返されます。
だからあなたは使うことができます
CompletableFuture<Void> cf = CompletableFuture.completedFuture(null);
そのようなすでに完成した未来を得るために。
しかし、あなたも使うことができます
CompletableFuture<Void> cf = CompletableFuture.allOf();
結果が依存するジョブがないことを示します。結果はまったく同じになります。
null
を渡すと思います:
CompletableFuture<Void> done = CompletableFuture.completedFuture(null);