public class SyncTest {
static class MyThread extends Thread{
private int i;
public MyThread(int i) {
this.i = i;
}
@Override
public void run() {
while (res.i == this.i);
}
}
private static Res res = new Res();
public static void main(String[] args) {
new MyThread(res.i).start();
for (int i = 0; i < 100; i++) {
res.i = (int) (Math.random() * 100);
}
}
}
为什么这里MyThread线程退出了循环,也就是res.i == this.i成立了,也就是说MyThread在没有添加同步机制的情况下获得了对res变量的可见性