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

Are fields guaranteed to be consistent after a successful join() of the CompletableFuture setting them?

我正在使用 CompletableFuture.runAsync() 异步初始化对象中的几个字段。由于字段在初始化后很长时间内经常使用,因此我不想将其标记为 volatile.

Future 上的 join() 成功返回后,字段是否一致,有人可以给出明确的参考吗?

join()get() 方法都会阻塞调用线程,直到结果准备好(或抛出异常)。当运行线程完成任务时,它会通知等待结果的线程。

这两个动作(wait-notify)在执行流之间建立了一个同步顺序,并且保证运行线程在通知之前所做的所有更新都将在等待线程醒来时看到。