[英]What is the correct way to create an already-completed CompletableFuture<Void>
我在java 8中使用Completable future我想編寫一個方法,根據接收到的參數,並行運行多個具有副作用的任務,然后返回它們的“組合”未來(使用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
,因此只能使用null
結果完成CompletableFuture<Void>
,這正是在成功完成allOf()
返回的未來調用join()
時也會得到的結果。
所以你可以使用
CompletableFuture<Void> cf = CompletableFuture.completedFuture(null);
獲得這樣一個已經完成的未來。
但你也可以使用
CompletableFuture<Void> cf = CompletableFuture.allOf();
表示沒有結果取決於的工作。 結果將完全相同。
傳遞一個null
我猜:
CompletableFuture<Void> done = CompletableFuture.completedFuture(null);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.