AQS鎖的原理
aqs原理:是一個(gè)用于構(gòu)建鎖和同步器的框架,它能降低構(gòu)建鎖和同步器的工作量,還可以避免處理多個(gè)位置上發(fā)生的競爭問題,在基于AQS構(gòu)建的同步器中,只可能在一個(gè)時(shí)刻發(fā)生阻塞,從而降低上下文切換的開銷,并提高吞吐量。
通過status標(biāo)識(shí)鎖 ReentrantLock使用排他鎖。AQS的status0表示加鎖,thread是當(dāng)前獲取鎖的線程。該鎖時(shí)可重入鎖,所以status0。CountDownLatch 使用共享鎖。
它繼承了AQS框架的內(nèi)部類,實(shí)現(xiàn)了插銷式同步器的具體功能。在Sync類內(nèi)部,有兩個(gè)重要的內(nèi)部類NonfairSync和FairSync,它們分別實(shí)現(xiàn)了非公平鎖和公平鎖的具體實(shí)現(xiàn)。
首先嘗試獲取資源,如果當(dāng)前狀態(tài)為0,表示沒有線程占有鎖,設(shè)置該線程為獨(dú)占模式,使用CAS設(shè)置狀態(tài),否則如果當(dāng)前線程和獨(dú)占線程是一個(gè)線程,修改狀態(tài)值,否則返回false。
當(dāng)?shù)谝淮握{(diào)用await()對線程進(jìn)行阻塞時(shí),當(dāng)前線程會(huì)首先調(diào)用park()進(jìn)入阻塞,并且加入到條件等待隊(duì)列中。當(dāng)某個(gè)線程調(diào)用此Condition對象的signal時(shí),等待隊(duì)列中的firstWaiter(第一個(gè)阻塞對象)會(huì)被加入到AQS鎖的CLH隊(duì)列中。
>>點(diǎn)擊查看今日優(yōu)惠<<
-
1吉利銀河全新大六座SUV諜照曝光 搭載千里浩瀚高階智駕
- 2國軒高科將發(fā)布全新高安全固態(tài)電池 能量密度達(dá)300Wh/kg
- 3領(lǐng)克900 2.0T Ultra正式開啟交付 成為首款搭載Thor芯片的量產(chǎn)車
- 4領(lǐng)克10 EM-P諜照曝光 搭載四驅(qū)動(dòng)力 領(lǐng)克07車主饞哭了!
- 5造型頗具跑味 全新小鵬P7預(yù)告圖發(fā)布
- 6哪吒汽車被申請破產(chǎn)審查 申請人為廣告公司
- 2國軒高科將發(fā)布全新高安全固態(tài)電池 能量密度達(dá)300Wh/kg