通過上面對offer和poll方法的分析,我們發現tail和head是延遲更新的,兩者更新觸發時機為:
1. tail更新觸發時機:當tail指向的節點的下一個節點不為null的時候,會執行定位隊列真正的隊尾節點的操作,找到隊尾節點后完成插入之后才會通過casTail進行tail更新;當tail指向的節點的下一個節點為null的時候,只插入節點不更新tail。
2. head更新觸發時機:當head指向的節點的item域為null的時候,會執行定位隊列真正的隊頭節點的操作,找到隊頭節點后完成刪除之后才會通過updateHead進行head更新;當head指向的節點的item域不為null的時候,只刪除節點不更新head。
并且在更新操作時,源碼中會有注釋為:hop two nodes at a time。所以這種延遲更新的策略就被叫做HOPS的大概原因是這個(猜的