• volatile 修饰变量等于向编译器传达如下两层含义:
    • 保证了不同线程对这个变量进行操作时的可见性,即一个线程修改了某个变量的值,这新值对其他线程来说是立即可见的。
    • 禁止进行指令重排序。
  • volatile 关键字定义了读写发生的次序:
    • 对一个变量(被 volatile 修饰的变量)的写操作先行发生于(happens before)后面对这个变量的读操作

1. 修饰标记量

//线程1
// boolean stop = false; ⇒ 
volatile boolean stop = false;
while(!stop){
    doSomething();
}

//线程2
stop = true;

references

posted on 2017-10-14 22:31  未雨愁眸  阅读(113)  评论(0编辑  收藏  举报