AQS原理


1. AQS原理

1.1. 是什么

AQS全程AbstractQueuedSynchronizer抽象隊列同步器,它是並發包中的基礎類

ReetrantLockReentrantReadWriteLock底層都用到了AQS來實現

1.2. AQS有什么功能

1

lock.lock()的時候,實際上底層是由AQS來完成的加鎖,AQS提供了一個state表示加鎖狀態,默認0表示不加鎖,Thread的屬性存放加鎖線程;

當加鎖的時候,通過cas操作將state+1,則成功獲取鎖,cas操作達到了加鎖的互斥效果

鎖的可重入性,就是通過state不斷+1實現,對一個ReentrantLock不斷加鎖,則state不斷+1,釋放鎖則-1

當加鎖失敗后,會把失敗線程加到AQS中的隊列里,等待獲取鎖

如果是公平鎖,當釋放鎖后會從隊列頭結點來獲取線程加鎖,非公平鎖則可能新來的線程也可能搶到鎖

1

參考:大白話聊聊Java並發面試問題之談談你對AQS的理解?


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM