高併發(15)-AQS

前言

上篇文章講解了CLH隊列鎖,今天講講AQS

什麼是AQS

AQS(AbstractQueuedSynchronizer),它是一個隊列同步器,是java併發用來構建鎖的基礎框架。算是線程之間同步的規範。它實現了一個FIFO(FirstIn、FisrtOut先進先出)的隊列。底層實現的數據結構是一個雙向鏈表。

AQS的實現方式

AQS是一個抽象類,使用方式則是主要使用繼承。子類通過繼承AQS並且實現抽象方法來管理。AQS本身沒有實現任何同步接口,而是是用模版模式,定義了同步狀態與獲取鎖和釋放鎖的方法。

AQS原理

AQS內部維護了一個CLH隊列來管理鎖,有個state屬性,通過state屬性來標識鎖狀態,如下圖所示,需要鎖的就去嘗試獲得鎖,檢測state的狀態,如果沒有獲取到鎖,就封裝成一個node節點加入到隊列中。
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章