深入了解ReentrantLock和AQS
ReentrantLock.lock,就是使用CAS更新AQS的state字段的值,該字段是volatile修飾
state=0:說明沒線程擷取鎖,可以嘗試擷取。
state>0:說明,已經有線程擷取了鎖。如果目前線程就是ExclusiveOwnerThread,state+1
否則擷取鎖失敗,進入隊列
- ReentrantLock.lock()方法的調用圖
-
ReentrantLock.unlock()方法
也就是将AQS的state-1
- ReentrantLock和AQS的類圖
- ReentrantLock非公平鎖,執行過程
ReentrantLock公平鎖,執行過程
暫時寫到這裡,有時間再繼續更新細節