Java并发机制底层实现原理-volatile
生活随笔
收集整理的這篇文章主要介紹了
Java并发机制底层实现原理-volatile
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
章節(jié)目錄
- volatile的實現(xiàn)原理與應用
1.volatile的實現(xiàn)原理與應用
Java source code->Java class->JVM->匯編指令->cpu執(zhí)行
java中使用的并發(fā)機制依賴于JVM實現(xiàn)和cpu指令。
1.1 volatile應用
volatile-保證可見性
volatile 是輕量級 synchronized,在多處理器并發(fā)中保證了共享變量的"可見性"。 可見性含義: 當一個線程修改共享變量時,另一個線程能立即讀到這個修改的值。volatile-執(zhí)行成本低
volatile不會引起線程上下文的切換和調度。 使用合適,volatile的使用代價會比synchronized小。volatile 如何保證可見性
class A{private volatile Singleton instance ;public A(){instance = new Singleton();} }轉成匯編代碼,如下:
movb, lock add1
上述對volatile共享變量instance進行寫操作的時候會多出第二行匯編代碼,Lock前綴的指令在多核處理器下會引發(fā)兩件事情。
- 將當前處理器緩存行的數(shù)據(jù)寫回到系統(tǒng)內存(工作內存寫入到主內存)
- 這個寫回操作,會使在其他cpu里緩存了該內存地址的數(shù)據(jù)無效。
注意:在多處理器下,為了保證各個處理器緩存是一致的,就會實現(xiàn)緩存一致性協(xié)議
緩存一致性協(xié)議
volatile兩條實現(xiàn)原則
- Lock前綴指令會引起處理器緩存回寫到內存
- 一個處理器的緩存回寫到主內存會導致其他緩存此主內存共享變量的處理器緩存無效
總結
以上是生活随笔為你收集整理的Java并发机制底层实现原理-volatile的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: u-boot分析三
- 下一篇: 数据结构与算法书籍推荐