关键字 volatile 是 Java 虚拟机提供的最轻量级的同步机制。

    一个变量被定义为 volatile 的特性:

    保证此变量对所有线程的可见性。但是操作并非原子操作,并发情况下不安全。
    如果不符合 运算结果并不依赖变量当前值,或者能够确保只有单一的线程修改变量的值 和 变量不需要与其他的状态变量共同参与不变约束 就要通过加锁(使用 synchronize 或 java.util.concurrent 中的原子类)来保证原子性。

    禁止指令重排序优化。
    通过插入内存屏障保证一致性。
    [

    ](https://blog.csdn.net/qq_41701956/article/details/81664921)