首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Java集合--阻塞队列(BlockingQueue)

1 BlockingQueue

在此章节中,我们会对阻塞队列进行详细的介绍。

如果你对队列还不熟悉,可以先去看下以下几篇文章,或许对你的入门有所启发!

Java集合--Queue队列介绍

Java集合--Queue(Java中实现1)

Java集合--Queue(Java中实现2)

在讲解ArrayBlockingQueue之前,我们先来介绍下它的父类---BlockingQueue。

BlockingQueue

BlockingQueue是一个接口,是所有阻塞队列的父类,定义了阻塞队列的主要操作方法。

代码语言:javascript
复制
public interface BlockingQueue<E> extends Queue<E> {
    
    boolean add(E e);

    boolean offer(E e);

    void put(E e) throws InterruptedException;

    boolean offer(E e, long timeout, TimeUnit unit) throws InterruptedException;

    E take() throws InterruptedException;

    E poll(long timeout, TimeUnit unit) throws InterruptedException;

    int remainingCapacity();

    boolean remove(Object o);

    public boolean contains(Object o);

    int drainTo(Collection<? super E> c);

    int drainTo(Collection<? super E> c, int maxElements);
}

添加方法:

代码语言:javascript
复制
add:插入元素,如果队列满了,抛出异常(底层调用offer方法);

put:插入元素,如果队列满了,就等待;

offer:插入元素,如果队列满了,就直接返回false;

获取方法:

代码语言:javascript
复制
element(继承父类):如果队列为空,直接抛出异常(底层调用peek方法);

peek(继承父类):如果队列为空,则返回null;

移除方法:

代码语言:javascript
复制
remove:移除对应元素,如果队列为空,则返回false;

take:移除元素,如果队列为空,则一直等待;

poll:移除元素,如果队列为空,则返回null;

BloeckingQueue成员:

下一篇
举报
领券