我正在使用CompletableFuture.runAsync()
异步初始化对象中的一些字段。由于这些字段在初始化后很长时间内会被频繁使用,因此我不想将其标记为 volatile
。
有人可以给出关于 Future
上的 join()
成功返回后字段是否一致的明确引用吗?
最佳答案
join()
和 get()
方法都会阻止调用者线程,直到结果准备就绪(或者将引发异常)。当运行线程完成任务时,它会通知等待结果的线程。
这两个操作(等待通知)在执行流之间建立同步顺序,并保证运行程序线程在通知之前所做的所有更新将在等待线程唤醒时看到。
关于java - CompletableFuture 成功 join() 设置字段后,字段是否保证一致?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35176601/