文章目錄
- AQS
- 引言
- AQS 的原理
- AQS 應用
- 舉例1:Semaphore
- 舉例2:ReentrantLock
- AQS 的案例分析
- 問題背景
- 解決方案
AQS
引言
在我們的日常生活和工作中,往往需要協調各個線程之間的執行順序和資源使用,而AQS(AbstractQueuedSynchronizer)即為 Java 并發包中提供的一種解決辦法。
在本文中,我們將會講解 AQS 的原理、應用,并通過案例分析深入闡述其在實際應用中的歷史和現狀。
AQS 的原理
AQS 機制的核心就是通過一個 FIFO 的隊列來對等待獲取資源的線程進行排序,每次資源的釋放都會導致頭節點的喚醒,而喚醒后的線程將會嘗試再次搶占資源。AQS 實現了一些常用的同步工具類,比如鎖、Semaphore、CountDownLatch 等等,這些同步工具最終的實現都是由 AQS 來實現的。