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();
}
}