queue 主要原则就是先进先出(特殊除外)
基本方法的区别
(
添加数据:
add 增加一个元索 如果队列已满,则抛出一个IIIegaISlabEepeplian异常
put 添加一个元素 如果队列满,则阻塞
offer 添加一个元素并返回true 如果队列已满,则返回false
移除数据:
remove 移除并返回队列头部的元素 如果队列为空,则抛出一个NoSuchElementException异常
poll 移除并返问队列头部的元素 如果队列为空,则返回null
take 移除并返回队列头部的元素
返回头部信息:
peek 返回队列头部的元素 如果队列为空,则返回null
element 返回队列头部的元素 如果队列为空,则抛出一个NoSuchElementException异常
)
java中queue主要用于多线程方面.
PriorityQueue
PriorityQueue并不是一个比较标准的队列实现,PriorityQueue保存队列元素的顺序并不是按照加入队列的顺序,而是按照队列元素的大小进行重新排序,这点从它的类名也可以
Deque
Deque接口代表一个"双端队列",双端队列可以同时从两端来添加、删除元素,因此Deque的实现类既可以当成队列使用、也可以当成栈使用
ConcurrentLinkedQueue
一种无锁的队列
BlockingQueue 一种阻塞的队列 (
ArrayBlockingQueue 基于数组的队列,需要定义长度;
LinkedBlockingQueue 基于链表的阻塞高效的并发队列,一种无界队列;
PriorityBlockingQueue 基于优先级的阻塞队列
DelayQueue 具有延迟效果的阻塞队列,时间没有到则不能被取出
SynchronousQueue 无缓存的队列
)