我正在使用CompletableFuture.runAsync()
异步初始化对象中的几个字段。由于这些字段在初始化后很长时间内经常使用,因此我不想将其标记为volatile
。
有人可以明确参考Future
上的join()
成功返回后字段是否一致?
join()
和 get()
方法都会阻止调用方线程,直到结果准备就绪(否则将引发异常)。当运行线程完成任务时,它会通知等待结果的线程。
这两个操作(等待-通知)在执行流之间建立同步顺序,并保证运行器线程在通知之前所做的所有更新在唤醒时都会显示在等待线程中。