java - CompletableFuture 成功 join() 设置字段后,字段是否保证一致?

标签 java thread-safety future

我正在使用CompletableFuture.runAsync()异步初始化对象中的一些字段。由于这些字段在初始化后很长时间内会被频繁使用,因此我不想将其标记为 volatile

有人可以给出关于 Future 上的 join() 成功返回后字段是否一致的明确引用吗?

最佳答案

join()get() 方法都会阻止调用者线程,直到结果准备就绪(或者将引发异常)。当运行线程完成任务时,它会通知等待结果的线程。

这两个操作(等待通知)在执行流之间建立同步顺序,并保证运行程序线程在通知之前所做的所有更新将在等待线程唤醒时看到。

关于java - CompletableFuture 成功 join() 设置字段后,字段是否保证一致?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35176601/

相关文章:

java - 在 Android/Java 中运行一个类 onClick()

python - 将 SQLalchemy 与 gevent 一起使用是否安全?

java - 从调用方法并行执行方法

C++ future 调用局部变量

Scala 捕获由 future 序列引发的错误

java - Android 应用程序在处理大文件时在某些设备上崩溃

java - 使用正则表达式获取匹配字符串的索引

java - 如果我们有压倒性的概念,为什么还要抽象呢?

java - 自动更新 map /集并检查大小

rust - 如何将 future 0.1 迭代器收集到向量中?