Рассмотрим следующий код.
public class Test {
private boolean running = false;
public void run() {
running = true;
}
public void test() {
boolean running1 = running;
boolean running2 = running;
System.out.println("running1: " + running1);
System.out.println("running2: " + running2);
}
}
Поток A вызывает run()
, затем другой поток B вызывает test()
, и не должно быть никаких отношений «происходит до». Я знаю, что не гарантируется, что поток B увидит изменения, внесенные потоком A. Но возможно ли, что вывод этой программы:
running1: true
running2: false