【讀書筆記】Java併發機制的底層實現原理
溫習《Java併發程式設計的藝術》
volatile
定義
輕量級的synchonized
在多處理器開發保證了共享變了的可見性(一個執行緒修改了一個共享變了,另外一個執行緒能夠讀取這個修改的值)
實現原理
Lock字首指令會引起處理器快取回寫到記憶體
一個處理器的快取回到記憶體會導致其他處理器的快取無效
目的
準確和一致地更新共享變數
使用優化
追加位元組能優化效能
為什麼追加64位元組能夠提高併發程式設計的效率呢
在下面兩種情況不應該是用64位元組
快取行非64位元組寬的處理器
快取變數不會被頻繁地寫
synchronized
定義
作用
對於普通同步形式,鎖是當前例項物件
對於靜態同步方法,鎖是當前Class物件
對於同步方法塊,鎖是synchonized括號裡配置的物件
實現原理
jvm基於進入和退出Monitor物件來實現方法同步和程式碼同步
使用monitorenter和monitorexit指令實現,在編譯後插入到插入程式碼
頭物件
synchonized用的鎖是存在java物件頭裡的,陣列用3個字寬儲存物件頭,非陣列用2個字寬儲存物件頭
Markword 預設儲存物件的Hashcode、分代年齡、鎖標記位
鎖升級與優化
從1.6以後為了減少獲得鎖和釋放鎖帶來的效能消耗,引入了偏向鎖和輕量鎖
鎖級別從低到高
無鎖狀態
偏向鎖狀態
輕量鎖狀態
重量鎖狀態
原子操作的實現原理
其他
名詞解釋
記憶體屏障
快取行
原子操作
快取行填充
快取命中
寫命中
寫缺失
相關文章
- 併發機制的底層實現
- [Java併發系列] 1.Java併發機制的底層實現Java
- Java 併發機制底層實現 —— volatile 原理、synchronize 鎖優化機制Java優化
- 【併發程式設計】(二)Java併發機制底層實現原理——synchronized關鍵字程式設計Javasynchronized
- 《java併發程式設計的藝術》併發底層實現原理Java程式設計
- javascript事件機制底層實現原理JavaScript事件
- 深入詳解Java反射機制與底層實現原理?Java反射
- 筆記-集合NSSet、字典NSDictionary的底層實現原理筆記
- Java 底層機制Java
- Java併發容器,底層原理深入分析Java
- Java 併發程式設計實踐 讀書筆記四Java程式設計筆記
- Java併發程式設計實戰--讀書筆記(目錄)Java程式設計筆記
- 【讀書筆記】Java併發程式設計的藝術筆記Java程式設計
- mysql鎖機制 讀書筆記MySql筆記
- Java程式設計思想讀書筆記一:併發Java程式設計筆記
- Effective Java讀書筆記一:併發(66-73)Java筆記
- Redisson的看門狗機制底層實現Redis
- ArrayList底層的實現原理
- java併發系列——底層CPUJava
- PHP底層的執行機制與原理PHP
- PHP 底層的執行機制與原理PHP
- HashMap底層實現原理HashMap
- NSDictionary底層實現原理
- AutoreleasePool底層實現原理
- java併發變成實戰讀書筆記(1,2章節)Java筆記
- php底層原理之垃圾回收機制PHP
- iOS底層原理總結篇-- 深入理解 KVC\KVO 實現機制iOS
- Java 併發集合的實現原理Java
- MySQL Join的底層實現原理MySql
- HashMap的底層結構、原理、擴容機制HashMap
- 現代作業系統-原理與實現【讀書筆記】作業系統筆記
- MySQL索引底層實現原理MySql索引
- 深入理解Java中的底層阻塞原理及實現Java
- 【讀書筆記】Android的Ashmem機制學習筆記Android
- PHP 底層的執行機制與原理解析PHP
- KVO的使用和底層實現原理
- Redis基礎知識(學習筆記12--集合的底層實現原理)Redis筆記
- Java集合類,從原始碼解析底層實現原理Java原始碼