動態

詳情 返回 返回

Condition - 動態 詳情

架構圖
image.png

sync-queue和condition-queue是相互獨立的,當調用signal方法時,會將等待隊列中的線程喚醒,這個喚醒的線程和普通的線程一樣去爭搶鎖,如果沒有強到,加入到sync-queue,此時節點就從condition-queue加入到了sync-queue,調用signalAll方法,node也是一個一個轉移過去的。
condition-queue中的Node使用了waitStatue、thread、nextWaiter屬性,prev和next屬性沒有使用condition-queue,調用await入隊列,進入隊列已經獲取鎖,在隊列中釋放鎖,離開隊列需要競爭鎖,沒有獲取到轉移到sync-queue
sync-queue,入隊時沒有鎖,在隊列中競爭,離開時獲取了鎖

原理
image.png

Add a new 評論

Some HTML is okay.