実際のJava並行性という本から:
オブジェクトを安全に発行するには、オブジェクトへの参照とオブジェクトの状態の両方を同時に他のスレッドから見えるようにする必要があります。適切に構築されたオブジェクトは、次の方法で安全に公開できます。
静的初期化子からのオブジェクト参照の初期化
それへの参照を volatile フィールドまたは AtomicReference に格納する
それへの参照を適切に構築されたオブジェクトの final フィールドに格納する
それへの参照を、ロックによって適切に保護されたフィールドに格納します。
私の質問は次のとおりです。
- 箇条書き 2 と 3 の違いは何ですか? オブジェクトの安全な公開に関する
volatile
アプローチとアプローチの違いに興味があります。final
- ポイント 3 で適切に構築されたオブジェクトのfinal フィールドとはどういう意味ですか? 箇条書きのポイントを開始する前に、著者は適切に構築されたオブジェクトについて話していることをすでに述べました (これは、
this
エスケープへの参照を許可していないと思います)。しかし、なぜ彼らは適切に構築されたオブジェクトについて言及したのでしょうか?