java
#阻塞队列各实现类
类 |
说明 |
ArrayBlockingQueue |
由数组结构组成的有界阻塞队列 |
LinkedBlockingQueue |
由链表结构组成的有界阻塞队列(默认容量为Integer.MAX_VALUE) |
PriorityBlockingQueue |
支持优先级排序的无界阻塞队列 |
DelayQueue |
使用优先级队列实现的延迟无界阻塞队列 |
SynchronousQueue |
不存储元素的阻塞队列,也即单个元素的队列 |
LinkedTransferQueue |
由链表结构组成的无界阻塞队列 |
LinkedBlockingQueue |
由链表结构组成的双向阻塞队列 |
#阻塞队列使用规范
方法类型 |
抛出异常 |
特殊值 |
阻塞 |
超时 |
插入 |
add(e) |
offer(e) |
put(e) |
offer(e,time,unit) |
移除 |
remove() |
poll() |
take() |
poll(time,unit) |
检查 |
element() |
peek() |
不可用 |
不可用 |
|
|
抛出异常 |
当阻塞队列满时,再往队列里add插入元素会抛IllegalStateException:Queue full当阻塞队列空时,再往队列里remove移除元素会抛NoSuchElementException |
特殊值 |
插入方法,成功true失败false移除方法,成功返回队列的元素,队列里面没有就返回null |
一直阻塞 |
当阻塞队列满时,生产者继续往队列里面 put 元素,队列会一直阻塞,直到put数据或者响应中断退出。当阻塞队列空时,消费者试图从队列 take 元素,队列会一直阻塞,消费者线程直到队列可用取出元素。 |
超时退出 |
当阻塞队列满时,队列会阻塞生产者线程一定时间,超过后限时后生产者线程就会退出。 |
原文地址:https://www.cnblogs.com/cjunn/p/12232536.html