ArrayBlockingQueue原理分析-remove方法
生活随笔
收集整理的這篇文章主要介紹了
ArrayBlockingQueue原理分析-remove方法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
remove方法是移除一個指定元素。看看它的實現代碼
public boolean remove(Object o) { if (o == null) return false; final Object[] items = this.items; //獲取數組元素 final ReentrantLock lock = this.lock; lock.lock(); //獲得鎖 try { if (count > 0) { //如果隊列不為空 final int putIndex = this.putIndex; //獲取下一個要添加元素時的索引 int i = takeIndex;//獲取當前要被移除的元素的索引 do { if (o.equals(items[i])) {//從takeIndex下標開始,找到要被刪除的元素 removeAt(i);//移除指定元素 return true;//返回執行結果 } //當前刪除索引執行加1后判斷是否與數組長度相等 //若為true,說明索引已到數組盡頭,將i設置為0 if (++i == items.length) i = 0; } while (i != putIndex);//繼續查找,直到找到最后一個元素 } return false; } finally { lock.unlock(); } }?
總結
以上是生活随笔為你收集整理的ArrayBlockingQueue原理分析-remove方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ArrayBlockingQueue原理
- 下一篇: 原子操作类