看了半天艾蓝,終于明白了隊(duì)列為空為什么要調(diào)用 updateHead(h, p) 作者標(biāo)注的poll方法 注釋7;
之前一直認(rèn)為是畫社添足 p == h 調(diào)用這個(gè)方法感覺沒啥用硬爆。實(shí)際上 h != p的情況是當(dāng)前head節(jié)點(diǎn)是無效節(jié)點(diǎn),p指針會(huì)向后移動(dòng)擎鸠。而移動(dòng)后的節(jié)點(diǎn)已經(jīng)被刪除item == null的情況缀磕。此時(shí)更新head節(jié)點(diǎn)是有效操作。 peek()方法里面調(diào)用的updateHead(h, p)與之類似劣光。
ConcurrentLinkedQueue 源碼分析 (基于Java 8)ConcurrentLinkedQueue 通過名字大家就可以知道, 這是一個(gè)通過鏈表實(shí)現(xiàn)的并發(fā)安全的隊(duì)列, 它應(yīng)該是java中并發(fā)環(huán)境下性能最好的隊(duì)列, 為什么呢? 因?yàn)樗?..