加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 创建已完成的CompletableFuture的正确方法是什么

发布时间:2020-12-14 23:56:42 所属栏目:Java 来源:网络整理
导读:我在 java 8中使用Completable future我想编写一个方法,根据接收到的参数,并行运行多个具有副作用的任务,然后返回它们的“组合”未来(使用CompletableFuture.allOf()),或者什么都不做,并回归已经完成的未来. 但是,allOf返回CompletableFuture Void: public
我在 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)

Returns a new CompletableFuture that is already completed with the given value.

和Void是不可实现的,所以我需要另一种方法来创建CompletableFuture< Void>类型已经完成的未来.

做这个的最好方式是什么?

解决方法

由于Void无法实例化,因此您只能完成CompletableFuture< Void>使用null结果,这正是在成功完成allOf()返回的未来调用join()时也会得到的结果.

所以你可以使用

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

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

但你也可以使用

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

表示没有结果取决于的工作.结果将完全相同.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读