CDL 本質(zhì)上是類似于信號(hào)量,而Semaphore 是每次發(fā)射一個(gè)信號(hào) 變回執(zhí)行一個(gè)線程(取決于公平非公平)

而CDL 是將所有的信號(hào)消耗完成 才開(kāi)始;
官方案例Driver實(shí)現(xiàn)了多線程的同步 執(zhí)行 以及對(duì)主線程的通知!
Cdl 內(nèi)部Sync 依然繼承制AQS,但是他沒(méi)有公平和非公平而言 因?yàn)樗哪康氖且黄饒?zhí)行完成!
await
實(shí)際調(diào)用的是Sync中
protected int tryAcquireShared(int acquires) {return (getState() == 0) ? 1 : -1;
}當(dāng)state==0時(shí) 那么和正常線程沒(méi)有任何區(qū)別 也不會(huì)加入到隊(duì)列 -1 會(huì)加入到隊(duì)列
而Sync 初始化時(shí)就會(huì)給state設(shè)置狀態(tài)量 那么 所以開(kāi)始調(diào)用await 會(huì)將線程加入到隊(duì)列并且park
在SYnc中有釋放方法:
protected boolean tryReleaseShared(int releases) {// Decrement count; signal when transition to zero
for (;;) {int c = getState();
if (c == 0)
return false;
int nextc = c-1;
if (compareAndSetState(c, nextc))
return nextc == 0;
}
}每次釋放量為1 并且知道釋放0時(shí)表示成功
countDown
每次釋放數(shù)量為1 ,釋放一次 并不會(huì)讓隊(duì)列中的線程unpark 因?yàn)楸仨毜却械亩坚尫?也就是state=0時(shí) 才會(huì)開(kāi)始執(zhí)行
總結(jié)CDL 的作用是是控制一組線程的并發(fā) 以及對(duì)多線程完成對(duì)主線程的通知
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧
本文標(biāo)題:java并發(fā)之CountDownLatch-創(chuàng)新互聯(lián)
文章路徑:http://www.chinadenli.net/article46/djdohg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機(jī)網(wǎng)站建設(shè)、移動(dòng)網(wǎng)站建設(shè)、動(dòng)態(tài)網(wǎng)站、網(wǎng)站排名、網(wǎng)站維護(hù)、做網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容