美文网首页
多线程-volatile

多线程-volatile

作者: QQ_33e9 | 来源:发表于2019-03-03 01:09 被阅读0次

volatile作用:

使多个线程间变量可见。

线程变量不可见的示例:

public class MyThread extends Thread {
  public boolean stop;
  public void run() {
    while(!stop){}
  }
}
public class Main {
  public static void main(String args[]) {
    MyThread t = new MyThread();
    t.start();
    try {
      Thread.sleep(1000);
    } catch(InterruptedException e) {
      e.printStackTrace();
    }
    t.stop = true;
  }
}

运行结果,卡死不动:


微信截图_20190302233456.png

解决办法:

修改boolean stop为volatile boolean stop;

volatile解决可见性问题的原理:

不加volatile,线程从私有内存读取数据,所以看不到其他线程的数据,加入volatile,线程从主内存读取数据。

相关文章

网友评论

      本文标题:多线程-volatile

      本文链接:https://www.haomeiwen.com/subject/sbvuuqtx.html