天天看點

深入了解ReentrantLock和AQS

深入了解ReentrantLock和AQS

ReentrantLock.lock,就是使用CAS更新AQS的state字段的值,該字段是volatile修飾

state=0:說明沒線程擷取鎖,可以嘗試擷取。

state>0:說明,已經有線程擷取了鎖。如果目前線程就是ExclusiveOwnerThread,state+1

否則擷取鎖失敗,進入隊列

  • ReentrantLock.lock()方法的調用圖
    深入了解ReentrantLock和AQS
  • ReentrantLock.unlock()方法

    也就是将AQS的state-1

深入了解ReentrantLock和AQS
  • ReentrantLock和AQS的類圖
深入了解ReentrantLock和AQS
  • ReentrantLock非公平鎖,執行過程
深入了解ReentrantLock和AQS

ReentrantLock公平鎖,執行過程

深入了解ReentrantLock和AQS

暫時寫到這裡,有時間再繼續更新細節