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