С учетом приведенного ниже кода:
public class Test {
private volatile boolean a;
private volatile boolean b;
private void one () {
a = true;
System.out.println (b);
}
private void two () {
b = true;
System.out.println (a);
}
public static void main (String[] args) throws Exception {
Test s = new Test ();
Thread one = new Thread (s::one);
Thread two = new Thread (s::two);
one.start ();
two.start ();
one.join ();
two.join ();
}
}
Гарантируется ли (в соответствии с моделью памяти Java), что как минимум один поток печатает true
?
IЯ понимаю, что между записью в энергозависимую переменную и операцией чтения, которая видит обновленное значение, существует отношение «происходит до того», но мне кажется, что ни один из потоков не может увидеть обновленное значение, хотя я не смог этого сделатьслучается.