阻塞队列
可以认为是一个容器
当阻塞队列是空的时候,从队列中获取元素的操作将会被阻塞
当阻塞队列是满的时候,从队列中插入元素的操作将会被阻塞
阻塞队列继承关系
|
方法类型 | 抛出异常 | 特殊值 | 阻塞 | 超时 |
---|---|---|---|---|
插入 | 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