介绍
BlockingQueue阻塞队列接口,定义了实现规范,线程安全。方便生成者和消费者模型使用,使用BlockingQueue时,开发者不需要考虑线程安全问题,将精力集中到业务实现即可。实际使用中,以生产者和消费者模型为例,分为三种情况: 1. 队列为空,生产者存入数据,消费者阻塞;2. 队列满,生产者阻塞,消费者拉取数据;3.队列非空非满,生产者可以存入数据,消费者也可以拉取数据。
接口介绍
入队操作
boolean add(E e);
添加一个元素到队尾,成功时返回true,如果队列满,则抛出异常
boolean offer(E e);
添加一个元素到队尾,成功时返回true,如果队列满,则返回false
void put(E e) throws InterruptedException;
添加一个元素到队尾,成功时返回true,如果队列满,则阻塞,直到队列有空间
出队操作
E take() throws InterruptedException;
取元素,如果队列非空,直接返回队头元素,反正则阻塞直到队列非空才返回队头元素
E poll(long timeout, TimeUnit unit)
throws InterruptedException;
取元素,如果队列非空,直接返回队头元素,反之则等待指定的时候,如果有元素则返回元素,反之返回null
队列容量
int remainingCapacity();
返回队列空闲的容量