AQS鎖的原理
2023-09-26 18:12:48
作者:蔡金盛
aqs原理:是一個用于構(gòu)建鎖和同步器的框架,它能降低構(gòu)建鎖和同步器的工作量,還可以避免處理多個位置上發(fā)生的競爭問題,在基于AQS構(gòu)建的同步器中,只可能在一個時刻發(fā)生阻塞,從而降低上下文切換的開銷,并提高吞吐量。
通過status標識鎖 ReentrantLock使用排他鎖。AQS的status0表示加鎖,thread是當前獲取鎖的線程。該鎖時可重入鎖,所以status0。CountDownLatch 使用共享鎖。
它繼承了AQS框架的內(nèi)部類,實現(xiàn)了插銷式同步器的具體功能。在Sync類內(nèi)部,有兩個重要的內(nèi)部類NonfairSync和FairSync,它們分別實現(xiàn)了非公平鎖和公平鎖的具體實現(xiàn)。
首先嘗試獲取資源,如果當前狀態(tài)為0,表示沒有線程占有鎖,設置該線程為獨占模式,使用CAS設置狀態(tài),否則如果當前線程和獨占線程是一個線程,修改狀態(tài)值,否則返回false。
當?shù)谝淮握{(diào)用await()對線程進行阻塞時,當前線程會首先調(diào)用park()進入阻塞,并且加入到條件等待隊列中。當某個線程調(diào)用此Condition對象的signal時,等待隊列中的firstWaiter(第一個阻塞對象)會被加入到AQS鎖的CLH隊列中。
>>點擊查看今日優(yōu)惠<<
本文導航
熱門文章