volatile可以保證線程可見性(高速緩存一致性)
通過在總線加LOCK#鎖的方式
通過緩存一致性協(xié)議禁止指令重排
happens-before原則但是無法保證原子性
在JVM底層volatile是采用“內(nèi)存屏障”來實現(xiàn)的蘑辑。
volatile關鍵字時,會多出一個lock前綴指令。lock前綴指令其實就相當于一個內(nèi)存屏障扩然。內(nèi)存屏障是一組處理指令只损,用來實現(xiàn)對內(nèi)存操作的順序限制膜赃。volatile的底層就是通過內(nèi)存屏障來實現(xiàn)的兔仰。