阻塞队列
What?
当队列是空的时,从队列中获取元素的操作将会被阻塞,或者当队列是满时,往队列里添加元素的操作会被阻塞;
Why?
- .阻塞队列不用手动控制线程什么时候该被阻塞,什么时候该被唤醒,简化了操作。
- 防止队列容器溢出,防止数据丢失。
分类
Collection–>Queue–>BlockingQueue–>7个实现类
- ArrayBlockingQueue: 由数组结构组成的有界阻塞队列
- LinkedBlockingQueue: 由链表结构组成的有界阻塞队列。
- PriorityBlockingQueue: 支持优先级排序的无界阻塞队列。
- DelayQueue: 使用优先级队列实现的延迟无界阻塞队列。
- SynchronousQueue: 单个元素的队列。
- LinkedTransferQueue: 由链表组成的无界阻塞队列。
- LinkedBlockingDeque: 有链表组成的双向阻塞队列。
生产者-消费者实例
使用BlockingQueue模拟生产者与消费者
- 抛出异常是指当队列满时,再次插入会抛出异常
- 返回布尔是指当队列满时,再次插入