2017-10-09 7 views
4

私はJava 8でCompletable futureを使用しています。受信したパラメータに基づいて、副作用を持つ複数のタスクを並列して実行し、 (CompletableFuture.allOf()を使用して) "結合された"将来を返すか、何もせずに既に完了した将来を返します。すでに完了しているCompletableFutureを作成する正しい方法<Void>

public static CompletableFuture<Void> allOf(CompletableFuture<?>... cfs) 

と値を期待しcompletedFuture()を使用している知っている既に完成未来を作成するための唯一の方法:CompletableFuture<Void>を返しallOfしかし

public static <U> CompletableFuture<U> completedFuture(U value) 

戻り値指定された値ですでに完了している新しいCompletableFuture

Void uninstantiableあるので、私はタイプCompletableFuture<Void>の既に完成未来を作成するための別の方法が必要です。

これを行うにはどのような方法が最適ですか?

+2

あなたは 'CompletableFutureだけではできません。 (null) '? – lexicore

答えて

4

Voidをインスタンス化することはできませんので、あなただけ返さ将来にjoin()を呼び出すときにもなります正確に何であるnull結果、とCompletableFuture<Void>を完了することができますallOf()によって正常に完了しました。

だから、

CompletableFuture<Void> cf = CompletableFuture.completedFuture(null); 

は、すでに完了し、将来を取得するために使用することができます。

しかし、あなたはまた、結果が依存するジョブがないことを示すために

CompletableFuture<Void> cf = CompletableFuture.allOf(); 

を使用することができます。結果はまったく同じになります。

8

私は推測nullを渡す:

CompletableFuture<Void> done = CompletableFuture.completedFuture(null); 
関連する問題