您的位置:首页 > 编程语言 > Java开发

java 多线程 volatile 关键字分析

2017-01-25 09:33 405 查看
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();

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: