Подъем и переупорядочивание — одно и то же?

Я прочитал из Effective Java , что при отсутствии синхронизации следующая последовательность A ниже может быть преобразована виртуальной машиной в последовательность B, и это называется hoisting. Я также где-то читал, что если переменные не объявлены как volatile, инструкции, включающие переменные, могут быть переупорядочены. Подъем и переупорядочивание — одно и то же?

  while (!done)    sequence A     
    i++;

  if (!done)
     while (true)    sequence B
        i++;

12
задан Inquisitive 11 July 2012 в 10:05
поделиться