java 多线程 volatile 关键字分析

来源:互联网 发布:美国航空怎么样知乎 编辑:程序博客网 时间:2024/05/22 07:59
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();                          }  }


0 0