创建已完成的ComppletableFuture<Void的正确方法是什么>

我在java 8中使用Completable futures,我想写一个方法,基于收到的参数,要么并行运行多个具有副作用的任务,然后返回它们的“组合”未来(使用),要么什么都不做并返回已经完成的未来。CompletableFuture.allOf()

但是,返回 :allOfCompletableFuture<Void>

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

创建一个知道的已经完成的未来的唯一方法是使用 ,它期望一个值:completedFuture()

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

返回已使用给定值完成的新 CompletableFuture。

并且是无法证实的,所以我需要另一种方法来创建一个已经完成的未来类型。VoidCompletableFuture<Void>

最好的方法是什么?


答案 1

由于无法实例化,因此您只能完成一个结果,而这正是您在调用成功完成后返回的未来时也会得到的结果。VoidCompletableFuture<Void>nulljoin()allOf()

所以你可以使用

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

以获得这样一个已经完成的未来。

但你也可以使用

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

以表示没有结果所依赖的作业。结果将完全相同。


答案 2

通过一个我猜:null

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

推荐