Roy*_*zer 13 java concurrency java-8 completable-future
我在java 8中使用Completable future我想编写一个方法,根据接收到的参数,并行运行带有副作用的多个任务然后返回它们的"组合"未来(使用CompletableFuture.allOf()),或者什么都不做并返回一个已经完成的未来.
但是,allOf返回一个CompletableFuture<Void>:
public static CompletableFuture<Void> allOf(CompletableFuture<?>... cfs)
Run Code Online (Sandbox Code Playgroud)
并且创建已经完成的未来的唯一方法就是使用completedFuture(),它需要一个值:
public static <U> CompletableFuture<U> completedFuture(U value)
Run Code Online (Sandbox Code Playgroud)
返回已使用给定值完成的新CompletableFuture.
并且Void是不可实现的,所以我需要另一种方法来创建已经完成的类型未来CompletableFuture<Void>.
做这个的最好方式是什么?
Hol*_*ger 14
由于Void无法实例化,因此您只能CompletableFuture<Void>使用null结果完成a ,这正是在成功完成后调用join()返回的未来时您将获得的结果allOf().
所以你可以使用
CompletableFuture<Void> cf = CompletableFuture.completedFuture(null);
Run Code Online (Sandbox Code Playgroud)
获得这样一个已经完成的未来.
但你也可以使用
CompletableFuture<Void> cf = CompletableFuture.allOf();
Run Code Online (Sandbox Code Playgroud)
表示没有结果取决于的工作.结果将完全相同.
Eug*_*ene 12
通过一个null我猜:
CompletableFuture<Void> done = CompletableFuture.completedFuture(null);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4510 次 |
| 最近记录: |