addConditionWaiter
生活随笔
收集整理的這篇文章主要介紹了
addConditionWaiter
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
這個方法的主要作用是把當前線程封裝成Node,添加到等待隊列。這里的隊列不再是雙向鏈表,而是單向鏈表
private Node addConditionWaiter() { Node t = lastWaiter; // 如果lastWaiter不等于空并且waitStatus不等于CONDITION時,把沖好這個節點從鏈表中移除 if (t != null && t.waitStatus != Node.CONDITION) { unlinkCancelledWaiters(); t = lastWaiter; } //構建一個Node,waitStatus=CONDITION。這里的鏈表是一個單向的,所以相比AQS來說會 簡單很多 Node node = new Node(Thread.currentThread(), Node.CONDITION); if (t == null) firstWaiter = node; else t.nextWaiter = node; lastWaiter = node; return node; }圖解分析
執行完addConditionWaiter這個方法之后,就會產生一個這樣的condition隊列
?
?
超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生總結
以上是生活随笔為你收集整理的addConditionWaiter的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: condition.await
- 下一篇: fullyRelease