1. 程式人生 > >Synchronized實現原理 個人整理

Synchronized實現原理 個人整理

Synchronized實現原理

主要作用

1.      確保執行緒互斥的訪問同步程式碼塊

2.      保證共享變數的修改及時可見

3.      有效解決重排序問題

主要作用位置

Synchronized 是物件鎖

1.      修飾普通方法

2.      修飾靜態方法

3.      修飾程式碼塊

工作原理 : 

每個物件有一個監視器鎖moitor  當monitor被佔用的時候就處於鎖定狀態

執行緒執行monitorenter指令時 嘗試獲取monitor的所有權

過程如下

1.      如果monitor 的進入數為0 則執行緒進入monitor 然後將引數設定為1,該現場即為monitor 所有者

2.      如果執行緒已經佔有該monitor 只是重新進入,則進入monitor 進入數加1

3.      如果執行緒已經佔用monitor 則該現場進入阻塞狀態,直到monitor的進入數為0,再重新嘗試獲取monitor的所有權