Предположим, что есть два потока без синхронизации, один устанавливает n = 1 другой выполняет method().
В следующем "read" всегда ссылается на чтение поля n.
public class MyClass
{
public int n = 0;
public void method() {
System.out.println(n); //read 1
System.out.println(n); //read 2
}
}
Будет ли возможен следующий вывод?
1
0
Ответ да, потому что хотя чтение 1 происходит - до чтения 2, тем не менее, возможно, чтобы чтение 2 было переупорядочено перед чтением 1, потому что оно не изменило бы семантику внутрипоточного исполнения.
Правильно ли это рассуждение?