
提到ArrayBlockingQueue的方法,想必大家都不陌生,我们在入队和出队的时候,接触了不少这方面的函数。当然ArrayBlockingQueue中的方法也不止于此,今天我们就全部为大家罗列出来,也算是做一个学习方向上的指引。然后就其中的peek方法带来实例介绍,并说明ArrayBlockingQueue使用的不足之处。
1.ArrayBlockingQueue函数列表
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | ArrayBlockingQueue(int capacity)
ArrayBlockingQueue(int capacity, boolean fair)
ArrayBlockingQueue(int capacity, boolean fair, Collection<? extends E> c)
boolean add(E e)
void clear()
boolean contains(Object o)
int drainTo(Collection<? super E> c)
int drainTo(Collection<? super E> c, int maxElements)
Iterator<E> iterator()
boolean offer(E e)
boolean offer(E e, long timeout, TimeUnit unit)
E peek()
E poll()
E poll(long timeout, TimeUnit unit)
void put(E e)
int remainingCapacity()
boolean remove(Object o)
int size()
E take()
Object[] toArray()
<T> T[] toArray(T[] a)
String toString()
|
2.peek方法实例
读取队列中队首的元素,不会删除该元素。
1 2 3 4 5 6 7 8 9 10 11 12 13 | public E peek() {
final ReentrantLock lock = this .lock;
lock.lock();
try {
return itemAt(takeIndex);
} finally {
lock.unlock();
}
}
|
3.ArrayBlockingQueue缺点
(1)队列长度固定且必须在初始化时指定,所以使用之前一定要慎重考虑好容量;
(2)如果消费速度跟不上入队速度,则会导致提供者线程一直阻塞,且越阻塞越多,非常危险;
(3)只使用了一个锁来控制入队出队,效率较低
以上就是java ArrayBlockingQueue的方法及不足点,大家可以对其中的方法保存下来,方便下次的查询和使用,同时不断学习ArrayBlockingQueue方法的实例操作,从而加深理解。