天天看點

(面經總結)一篇文章帶你完整複習 Java 中的 AQS

文章目錄

    • 一、什麼是AQS
    • 二、AQS的原理
    • 三、state:狀态
    • 四、AQS共享資源的方式:獨占式和共享式

一、什麼是AQS

AQS(Abstract Queued Synchronizer)是一個抽象的隊列同步器,通過維護一個共享資源狀态(Volatile Int State)和一個先進先出(FIFO)的線程等待隊列來實作一個多線程通路共享資源的同步架構。

二、AQS的原理

AQS為每個共享資源都設定一個共享資源鎖,線程在需要通路共享資源時首先需要擷取共享資源鎖,如果擷取到了共享資源鎖,便可以在目前線程中使用該共享資源,如果擷取不到,則将該線程放入線程等待隊列,等待下一次資源排程,具體的流程如圖3-14所示。

(面經總結)一篇文章帶你完整複習 Java 中的 AQS

許多同步類的實作都依賴于AQS,例如常用的ReentrantLock、Semaphore和Count