java中的队列

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异常
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容