私はEffectiveJavaから、同期がない場合、以下のシーケンスAを仮想マシンによってシーケンスBに変換できることを読みました。これは、と呼ばれhoisting
ます。また、変数が揮発性命令として宣言されていない場合、変数を含む命令を並べ替えることができることもどこかで読みました。巻き上げと並べ替えは同じですか?
while (!done) sequence A
i++;
if (!done)
while (true) sequence B
i++;