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