簡體   English   中英

創建已完成的CompletableFuture的正確方法是什么<Void>

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM