您好,登錄后才能下訂單哦!
1、Thread-1執行await,等待主線程放行;
2、Thread-2執行await,等待主線程放行;
3、主線程執行countDown()放行。
1、CountDownLatch的初始計數器就是直接設置AQS的同步狀態值state
2、countDown就是對state執行減1
3、當state為0的時候,放行。
只要state是0,則所有獲取資源的申請都會成功,這就是共享鎖的含義。
此時,自旋獲取一次也會失敗,會進行阻塞,進入【等待隊列】
private void setHeadAndPropagate(Node node, int propagate) {
Node h = head; // Record old head for check below
setHead(node);//設置當前節點為頭節點
if (propagate > 0 || h == null || h.waitStatus < 0 ||
(h = head) == null || h.waitStatus < 0) {
Node s = node.next;
if (s == null || s.isShared()) //后繼節點如果是共享的,則依次喚醒后繼節點,這就是共享的原理
doReleaseShared();
}
}
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。