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