volatile

  • volatile可以保证线程可见性(高速缓存一致性)
    通过在总线加LOCK#锁的方式
    通过缓存一致性协议

  • 禁止指令重排
    happens-before原则

  • 但是无法保证原子性

  • 在JVM底层volatile是采用“内存屏障”来实现的。

volatile关键字时,会多出一个lock前缀指令。lock前缀指令其实就相当于一个内存屏障。内存屏障是一组处理指令,用来实现对内存操作的顺序限制。volatile的底层就是通过内存屏障来实现的。

你可能感兴趣的:(volatile)