volatile底層原理

volatile實現原理:多處理器情況下,底層是通過JVM向處理器發送Lock前綴指令,Lock指令會讓處理器將緩存回寫到主存中去,並且使得其他處理器的緩存全部無效,也就是說,volatile可以讀到主存裏最新的值,即保證單個變量的可見性;除此之外,JVM還會發送load addl指令,load addl指令禁止指令重排,建立內存屏障,保證了內存指令操作的有序性。

 關於可見性和原子性的看法:


volatile int  i = 0;//多線程訪問,無論哪個線程訪問都能保證i = 0;這個是可見性。

i ++;  
//1、讀i值;
//2、計算 i+1;
//3、將計算後的i值賦給i;
//多線程情況下,第一步讀的i值保證可見性和原子性;第二步和第三部,都無法保證原子性。

參考:

https://www.jianshu.com/p/ef8de88b1343

https://www.cnblogs.com/dolphin0520/p/3920373.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章