下面這段話摘自《深刻理解Java虛擬機》:緩存
「觀察加入volatile關鍵字和沒有加入volatile關鍵字時所生成的彙編代碼發現,加入volatile關鍵字時,會多出一個lock前綴指令」排序
lock前綴指令實際上至關於一個內存屏障(也成內存柵欄),內存屏障會提供3個功能:內存
1)它確保指令重排序時不會把其後面的指令排到內存屏障以前的位置,也不會把前面的指令排到內存屏障的後面;即在執行到內存屏障這句指令時,在它前面的操做已經所有完成;虛擬機
2)它會強制將對緩存的修改操做當即寫入主存;生成
3)若是是寫操做,它會致使其餘CPU中對應的緩存行無效。volatile