ArrayBlockingQueue原理分析-dequeue方法
生活随笔
收集整理的這篇文章主要介紹了
ArrayBlockingQueue原理分析-dequeue方法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
這個是出隊列的方法,主要是刪除隊列頭部的元素并發(fā)返回給客戶端?
takeIndex,是用來記錄拿數據的索引值
private E dequeue() { // assert lock.getHoldCount() == 1; // assert items[takeIndex] != null; final Object[] items = this.items; @SuppressWarnings("unchecked") E x = (E) items[takeIndex]; //默認獲取0位置的元素 items[takeIndex] = null;//將該位置的元素設置為 空 if (++takeIndex == items.length)//這里的作用也是一樣,如果拿到數組的最大值,那么重置為0,繼續(xù)從頭部位置開始獲取數據 takeIndex = 0; count--;//記錄 元素個數遞減 if (itrs != null) itrs.elementDequeued();//同時更新迭代器中的元素數據 notFull.signal();//觸發(fā) 因為隊列滿了以后導致的被阻塞的線程 return x; }?
總結
以上是生活随笔為你收集整理的ArrayBlockingQueue原理分析-dequeue方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ArrayBlockingQueue原理
- 下一篇: ArrayBlockingQueue原理