日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

Java并发机制底层实现原理-volatile

發布時間:2025/3/21 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java并发机制底层实现原理-volatile 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

章節目錄

  • volatile的實現原理與應用

1.volatile的實現原理與應用

Java source code->Java class->JVM->匯編指令->cpu執行
java中使用的并發機制依賴于JVM實現和cpu指令。

1.1 volatile應用

volatile-保證可見性

volatile 是輕量級 synchronized,在多處理器并發中保證了共享變量的"可見性"。 可見性含義: 當一個線程修改共享變量時,另一個線程能立即讀到這個修改的值。

volatile-執行成本低

volatile不會引起線程上下文的切換和調度。 使用合適,volatile的使用代價會比synchronized小。

volatile 如何保證可見性

class A{private volatile Singleton instance ;public A(){instance = new Singleton();} }

轉成匯編代碼,如下:
movb, lock add1
上述對volatile共享變量instance進行寫操作的時候會多出第二行匯編代碼,Lock前綴的指令在多核處理器下會引發兩件事情。

  • 將當前處理器緩存行的數據寫回到系統內存(工作內存寫入到主內存)
  • 這個寫回操作,會使在其他cpu里緩存了該內存地址的數據無效。

注意:在多處理器下,為了保證各個處理器緩存是一致的,就會實現緩存一致性協議
緩存一致性協議

每個處理器通過嗅探在總線上傳播的數據來對比檢查自己緩存的值是否過期 了,當處理器發現自己緩存行對應的內存地址中的值被修改,就會將當前處理 器的緩存行設置為無效狀態,當其他處理器對這個共享變量進行修改操作時, 會重新從系統內存中把數據都到處理器緩存行當中。

volatile兩條實現原則

  • Lock前綴指令會引起處理器緩存回寫到內存
1.鎖總線+獨占任何共享內存 2.緩存鎖定+緩存一致性協議
  • 一個處理器的緩存回寫到主內存會導致其他緩存此主內存共享變量的處理器緩存無效
每個處理器通過嗅探在總線上傳播的數據來對比檢查自己緩存的值是否過期 了,當處理器發現自己緩存行對應的內存地址中的值被修改,就會將當前處理 器的緩存行設置為無效狀態,當其他處理器對這個共享變量進行修改操作時, 會重新從系統內存中把數據都到處理器緩存行當中。 《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的Java并发机制底层实现原理-volatile的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。