「Java Concurrency in Practice」を読んでいるときに、次のことに出くわしました-
オブジェクトを安全に発行するには、オブジェクトへの参照とオブジェクトの状態の両方を同時に他のスレッドから見えるようにする必要があります。適切に構築されたオブジェクトは、次の方法で安全に公開できます。
- 静的初期化子からのオブジェクト参照の初期化。
- それへの参照を volatile フィールドまたは AtomicReference に格納します。
- それへの参照を、適切に構築されたオブジェクトの final フィールドに格納します。また
- それへの参照を、ロックによって適切に保護されたフィールドに格納します。
私の質問は - 2 番目のポイントは本当ですか? つまり、オブジェクトへの参照を揮発性参照に格納するだけで、オブジェクトの状態を他のスレッドから見えるようにすることはできますか? そうでない場合、上記の点を間違って読んでいますか?