1、一个变量声明为volatile,就意味着这个变量被修改后其他所有使用到此变量的线程都立即可见
2、禁止指令重排序,防止在运行时不是按照代码的先后顺序执行
volatile是一种轻量级的同步机制,不会引起的线程上下文切换,可以保证可见性和禁止重排序,但不能保证原子性带来的线程安全问题。
volatile特性
可见性
当有多个线程访问同一个变量时,一个线程对此变量的修改,其他线程应该立刻可获取到修改后的值。
一个变量用volatile修饰后,当对此变量写入时,会立刻将写入后的值刷新到主存中,并且将其他线程本地内存中保存的值失效,其他线程读取此变量时,会直接从主内存中读取。
public class VolatileDemo {
private static boolean stop = true;
public static void main(String[] args) throws InterruptedException {
new Thread(() -> {
while(stop){//无限循环
}
}).start();
//确保