阻塞队列
队列描述描述
名称 | 描述 |
---|---|
LinkedBlockingQueue | 一种容量没有上边界的阻塞队列,亦可指定最大容量 |
LinkedBlockingDeque | 一种双端队列版本 |
ArrayBlockingQueue | 一种在构造时需要指定容量,并且有一个可选的参数来指定是否需要公平性 |
PriorityBlockingQueue | 一种带优先级的队列 |
DelayQueue | 一种延迟阻塞队列【可实现如下单后三十分钟内没有付款就自动取消订单的操作】 |
TransferQueue | 一种等待消费者准备就绪才可接收的阻塞队列,如果调用transfer 那么会阻塞,直到另一个线程将其取出 |
阻塞队列通用方法
方法 | 动作 | 特殊情况 |
---|---|---|
add | 添加一个元素 | 如果队列满, 则抛出IllegalStateException 异常 |
element | 返回队列头元素 | 如果队列空,抛出NoSuchElementException 异常 |
offer | 添加一个元素并返回true | 如果队列满, 返回false |
peek | 返回队列头元素 | 如果队列空, 则返回null |
poll | 移除并返回队列的头元素 | 如果队列空, 则返回null |
put | 添加一个元素 | 如果队列满, 则阻塞 |
remove | 移出并返回头元素 | 如果队列空, 则抛出NoSuchElementException 异常 |
take | 移出并返回头元素 | 如果队列空, 则阻塞 |