繁体   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