我正在使用CompletableFuture.runAsync()
异步初始化对象中的几个字段。由于字段在初始化后很久就经常使用,我不想将其标记为volatile
。
有人可以在join()
成功返回Future
后,是否一致地提供字段是否一致?
答案 0 :(得分:1)
join()
和get()
方法都会阻塞调用程序线程,直到结果准备就绪(或抛出异常)。当跑步者线程完成任务时,它会通知等待结果的线程。
这两个操作(wait-notify)在执行流程之间建立同步顺序,并且保证在通知之前由跑步者线程做出的所有更新将在等待线程中被唤醒时看到。