-
阻塞队列
2021-03-10 11:00:06阻塞队列 可以认为是一个容器当阻塞队列是空的时候,从队列中获取元素的操作将会被阻塞 当阻塞队列是满的时候,从队列中插入元素的操作将会被阻塞 阻塞队列继承关系 collection queue ...阻塞队列
可以认为是一个容器
当阻塞队列是空的时候,从队列中获取元素的操作将会被阻塞
当阻塞队列是满的时候,从队列中插入元素的操作将会被阻塞阻塞队列继承关系
collection
queue
blockingqueue (接口)
arrayblockingqueue 由数组结构组成的有界阻塞队列
linkedblockingqueue 有链表结构组成的有界(但大小默认是max的)阻塞队列
synchronousqueue 不存储元素的阻塞队列,也即单个元素的队列
linkedblockingdeque 不常用;由链表组成的双向阻塞队列
阻塞队列的方法
方法类型 抛出异常 特殊值 阻塞 超时
插入 add(e) offer(e) put(e) offer(e,timeout)
移除 remove() poll() take() poll(timeout)
检查 element() peek() 不可用 不可用
抛出异常
当阻塞队列是满的时候,再往队列中add元素,会抛出异常:queue full
当阻塞队列是空的时候,再往队列中remove元素会抛nosuchelementexception
特除值
插入方法,成功
true
失败
false
移除方法,成功返回出队列的元素,队列为空返回
null
一直阻塞
当阻塞队列是满的时候,再往队列中put元素,队列会一直阻塞生产线程直到put数据or响应中断退出。
当阻塞队列为空时时候,在进行take元素,队列会一直阻塞消费者线程直到队列可用。
超时
当阻塞队列是满的时候,再往队列中offert元素,队列会阻塞生产线程直到超时,成功返回
true
,失败返回
false
当阻塞队列为空时时候,再往队列中poll元素, 队列会阻塞消费线程直到超时, 成功返回出队列的元素,队列为空返回
null
方法类型
抛出异常
特殊值
阻塞
超时
插入 add(e) offer(e) put(e) offer(e,timeout) 移除 remove() poll() take() poll(timeout) 检查 element() peek() 不可用 不可用 抛出异常
当阻塞队列是满的时候,再往队列中add元素,会抛出异常:queue full
当阻塞队列是空的时候,再往队列中remove元素会抛nosuchelementexception当阻塞队列是满的时候,再往队列中add元素,会抛出异常:queue full
当阻塞队列是空的时候,再往队列中remove元素会抛nosuchelementexception特殊值
插入方法,成功true失败false
移除方法,成功返回出队列的元素,队列为空返回null
一直阻塞
当阻塞队列是满的时候,再往队列中put元素,队列会一直阻塞生产线程直到put数据or响应中断退出。
当阻塞队列为空时时候,在进行take元素,队列会一直阻塞消费者线程直到队列可用。
超时
当阻塞队列是满的时候,再往队列中offert元素,队列会阻塞生产线程直到超时,成功返回true,失败返回false
当阻塞队列为空时时候,再往队列中poll元素, 队列会阻塞消费线程直到超时, 成功返回出队列的元素,队列为空返回null