1、Thread-1執(zhí)行await,等待主線程放行;
2、Thread-2執(zhí)行await,等待主線程放行;
3、主線程執(zhí)行countDown()放行。
創(chuàng)新互聯(lián)專注于網(wǎng)站建設(shè)|網(wǎng)站維護|優(yōu)化|托管以及網(wǎng)絡(luò)推廣,積累了大量的網(wǎng)站設(shè)計與制作經(jīng)驗,為許多企業(yè)提供了網(wǎng)站定制設(shè)計服務(wù),案例作品覆蓋成都廣告推廣等行業(yè)。能根據(jù)企業(yè)所處的行業(yè)與銷售的產(chǎn)品,結(jié)合品牌形象的塑造,量身定制品質(zhì)網(wǎng)站。
1、CountDownLatch的初始計數(shù)器就是直接設(shè)置AQS的同步狀態(tài)值state
2、countDown就是對state執(zhí)行減1
3、當(dāng)state為0的時候,放行。
只要state是0,則所有獲取資源的申請都會成功,這就是共享鎖的含義。
此時,自旋獲取一次也會失敗,會進行阻塞,進入【等待隊列】
private void setHeadAndPropagate(Node node, int propagate) {
Node h = head; // Record old head for check below
setHead(node);//設(shè)置當(dāng)前節(jié)點為頭節(jié)點
if (propagate > 0 || h == null || h.waitStatus < 0 ||
(h = head) == null || h.waitStatus < 0) {
Node s = node.next;
if (s == null || s.isShared()) //后繼節(jié)點如果是共享的,則依次喚醒后繼節(jié)點,這就是共享的原理
doReleaseShared();
}
}