Java 因为编译器会经过一定优化,并不是我们所见即所得,比如单线程能很好工作,多线程就不然。
Thread1->changeValue
Thread2->readValue
----------------------------------------
result:x1 = x2 = 0;y1 = 3;
CLASS A {
Object o1 = new Object();
Object o2 = o1;
public void changeValue() {
o1.x = 3;
}
public void readValue() {
Object o3 = o1;
int x1 = o3.x;
int y1 = o2.x;
int x2 = o3.x;
}
}