public class TestVolatileDemo {
//加 volatile 或者 System.out.println(bChanged); 每次都能退出
//不加 有时候退出 有时候死循环
//
// volatile
private static boolean bChanged = false;
public static void main(String[] args) throws Exception {
new Thread() {
@Override
public void run() {
for (;;) {
//synchronized (TestVolatileDemo.class) {
// 加上同步锁 当前线程的变量bChanged 会变成 volatile 的效果
//}
if (bChanged == !bChanged) {
System.out.println("!= "+bChanged);
System.exit(0);
}
}
}
}.start();
Thread.sleep(1);
new Thread() {
@Override
public void run() {
for (;;) {
bChanged = !bChanged;
//System.out.println("..");
}
}
}.start();
}
}