私はJava仕様でこれを見ています:
x と y が同じスレッドのアクションであり、プログラムの順序で x が y の前にある場合、x は y の前に発生します。
そしてこれも
元のコード
スレッド 1
r2 = A;
B = 1;
有効なコンパイラ変換 (コンパイラは、どちらのスレッドでも命令を並べ替えることができますが、これがそのスレッドの実行に単独で影響を与えない場合)
スレッド 1
B = 1;
r2 = A;
私はその2つのことで混乱しています。
アクション x がアクション y の前に来る場合、x は y の前に発生するはずです。x の場合は r2=A、y の場合は B=1 と考えると、r2=A は B=1 の前に発生するはずです。y が true になる前に x が発生した場合、r2=A の前に B=1 が実行されるのはなぜですか?