Joshua Bloch による「Effective Java Second Edition」を読んでいて、同時実行性に関する以下のステートメントに混乱しています -
「言語仕様では、変数が long または double 型でない限り、変数の読み取りまたは書き込みがアトミックであることを保証しています [JLS、14.4.7]。つまり、long または double 以外の変数の読み取りは、次の値を返すことが保証されています。複数のスレッドが同期せずに同時に変数を変更したとしても、何らかのスレッドによってその変数に格納されました。」
これは、誰かが手元に本を持っている場合に備えて、259 ページの最後の段落に記載されています。
複数のスレッドが変数を変更している場合でも、参照される変数は常に値を持つとは限りませんか?