volatile的实现原理 volatile可以保证可见性和禁止指令重排,但是不能保证原子性。 一、在JVM底层中,被volatile修饰的变量,赋值之后有一个lock操作,这个操作相当于是一个内存屏障,不允许lock之后的指令重排到lock之前执行。这是volatile可以禁止指令重排的原因。 二、lock操作,它还有将处理器中的缓存写入内存的作用,该写入还会引起其他处理器无效化其缓存,在用到其值得时候只能去主内存中去刷出来在缓存到本地。这是volatile保证可见性的原因。