Предположим, что есть два потока без синхронизации, один устанавливает 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, потому что оно не изменило бы семантику внутрипоточного исполнения.
Правильно ли это рассуждение?