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

java – 必须加入一个Thread以确保其计算完成

发布时间:2020-12-15 01:09:48 所属栏目:Java 来源:网络整理
导读:我有一个实用工具方法(用于单元测试,它发生了)在另一个线程中执行Runnable.它启动线程运行,但不等待线程完成,而是依赖于Future.该方法的调用者应该得到()Future.但这足以确保Runnable完成计算的安全发布吗? 这是方法: private static Future 在返回的Futur

我有一个实用工具方法(用于单元测试,它发生了)在另一个线程中执行Runnable.它启动线程运行,但不等待线程完成,而是依赖于Future.该方法的调用者应该得到()Future.但这足以确保Runnable完成计算的安全发布吗?

这是方法:

private static Future

在返回的Future上调用Future.get()之后,该方法的调用者可以安全地假设Runnable已经完成执行,并且其结果已经安全发布了吗?

最佳答案
不,你不需要加入().在未来调用get()就足够了.

CompletableFuture接口是Future的子类型.并且javadoc for Future表明:

Memory consistency effects: Actions taken by the asynchronous computation happen-before actions following the corresponding Future.get() in another thread.

发生这种情况之前 – 关系足以确保安全发布get()返回的值.

此外,在CompletableFuture完成,异常完成或取消之前,get()调用将不会完成.

(编辑:李大同)

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

    推荐文章
      热点阅读