java併發編程筆記2-底層實現原理-volatile

在這裏插入圖片描述
爲什麼要畫上面的圖呢
Java中所使用的併發機制依賴於JVM的實現和CPU的指令。(是不是有點蒙,繼續往下看就會明白這句話啥意思)

1.volatile的使用
字段被聲明成 volatile。
2.volatile是如何來保證一致?(Java線程內存模型確保所有線程看到這個變量的值是一致的)
通過工具獲取JIT編譯器生成的彙編指令來查看對volatile進行寫操作時,CPU會做什麼事情,如下
在這裏插入圖片描述
重點:instanct 被volatile變量修飾後,讀寫操作的時候會多出第二行彙編代碼 ,並且加上了鎖lock。

通過查IA-32架構軟件開發者手冊可知,Lock前綴的指令在多核處理器下會引發了兩件事情
1將當前處理器緩存行的數據寫回到系統內存。
2這個寫回內存的操作會使在其他CPU裏緩存了該內存地址的數據無效

看到這是不是更懵了,那是因爲你對Java線程內存模型不理解。

不重要,只要知道上面這個過程就好了,所有等我後面具體介紹內存模型就理解了。

未完待續

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