AQS

​ AbstractQueuedSynchronizer抽象隊列同步器簡稱AQS,它是實現同步器的基礎組件,juc下面Lock的實現以及一些併發工具類就是通過AQS來實現的。

AQS是一個抽象類。不可以被實例化,它的設計之初就是爲了讓子類通過繼承來實現多樣的功能的。它內部提供了一個FIFO的等待隊列,用於多個線程等待一個事件(鎖)。

java提供了兩種方式來加鎖,一種是關鍵字:synchronized,一種是concurrent包下的lock鎖。synchronized是java底層支持的,而concurrent包則是jdk實現。

它維護了一個volatile int state(代表共享資源或者叫做鎖狀態)和一個FIFO線程等待隊列(多線程爭用資源被阻塞時會進入此隊列,這個隊列就是用雙向鏈表實現的)。

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