生产消费模型首选的数据结构。
Queue
一种先进先出(FIFO)的数据结构。
阻塞队列
BlockingQueue在Queue基础上添加的接口:
take:如果队列为空,则阻塞
put :如果队列满,则阻塞
offer(E e, long timeout, TimeUnit unit) :队列满时可以指定阻塞时间,若不指定则返回false
poll(long timeout, TimeUnit unit):队列空时介意指定阻塞时间,不指定返回null
常用阻塞队列
- ArrayBlockingQueue:有界,构造时要指定大小
- LinkedBlockingQueue: 创建时可以不指定大小
- PriorityBlockingQueue:队列中元素要是实现Comparable
接口,take时先出优先级高的 - DelayQueue:队列元素实现Delayed接口,头是存活时间最长元素
实现原理
判断数组是否为空或已满&&线程间通信