AQS 抽象隊列同步器(Abstract Queued Synchronizer) 知識點

AQS的主要使用方式是繼承,子類經過繼承同步器並實現它的抽象方法來管理同步狀態。安全

AQS使用一個int類型的成員變量state來表示同步狀態,當state>0時表示已經獲取了鎖,當state = 0時表示釋放了鎖。它提供了三個方法(getState()、setState(int newState)、compareAndSetState(int expect,int update))來對同步狀態state進行操做,固然AQS能夠確保對state的操做是安全的。線程

AQS經過內置的FIFO同步隊列來完成資源獲取線程的排隊工做,若是當前線程獲取同步狀態失敗(鎖)時,AQS則會將當前線程以及等待狀態等信息構形成一個節點(Node)並將其加入同步隊列,同時會阻塞當前線程,當同步狀態釋放時,則會把節點中的線程喚醒,使其再次嘗試獲取同步狀態。繼承

出處:https://juejin.im/entry/5ae02a7c6fb9a07ac76e7b70隊列

相關文章
相關標籤/搜索