queue 在java1.5被引入,它和list 、set一样继承自collection接口。其中LinkedList 实现Deque接口
1.未实现阻塞接口的:
- LinkedList : 实现了Deque接口,受限的队列
- PriorityQueue : 优先队列,本质维护一个有序列表。可自然排序亦可传递 comparator构造函数实现自定义排序。
- ConcurrentLinkedQueue:基于链表 线程安全的队列。增加删除O(1) 查找O(n)
2.实现阻塞接口的:
-
实现blockqueue接口的五个阻塞队列,其特点:线程阻塞时,不是直接添加或者删除元素,而是等到有空间或者元素时,才进行操作。
-
ArrayBlockingQueue: 基于数组的有界队列
-
LinkedBlockingQueue: 基于链表的无界队列
-
ProiporityBlockingQueue:基于优先次序的无界队列
-
DelayQueue:基于时间优先级的队列
-
SynchronousQueue:内部没有容器的队列 较特别 --其独有的线程一一配对通信机制
一些基本操作方法:
- add 添加一个元素 如果队列已满 抛出illegalabException异常
- offer 添加一个元素并返回true 如果队列已满 则返回false
- put 添加一个元素 如果队列已满 则阻塞
- remove 删除并返回队列头部元素 如果队列为空 则抛出一个NoSuchElementException
- poll 移除并返回队列头部元素 如果队列为空 则返回null
- take 删除并返回队列头部元素 如果队列为空 则阻塞
- peek 返回队列头部元素 如果队列为空 则返回null
- element 返回队列头部元素 如果队列为空 则抛出NoSuchElementException异常
网友评论