java中的队列有哪些?

队列是一个先进先出的的数据结构
消息队列是用来解决这样的问题的:将突发的大量请求转换为服务器能够处理的队列请求。eg:在一个秒杀活动中,服务器1秒可以处理100条请求。而在秒杀活动开启时1秒进来1000个请求并且持续10秒。这个时候就需要将这10000个请求放入消息队列里面,后端按照原来的能力处理,用100秒将队列中的请求处理完毕。这样就不会导致宕机。

queue 在java1.5被引入,它和list 、set一样继承自collection接口。其中LinkedList 实现Deque接口

  • 未实现阻塞接口的:
    LinkedList : 实现了Deque接口,受限的队列
    PriorityQueue : 优先队列,本质维护一个有序列表。可自然排序亦可传递 comparator构造函数实现自定义排序。
    ConcurrentLinkedQueue:基于链表 线程安全的队列。增加删除O(1) 查找O(n)

  • 实现阻塞接口的:

    实现blockqueue接口的五个阻塞队列,其特点:线程阻塞时,不是直接添加或者删除元素,而是等到有空间或者元素时,才进行操作。

    ArrayBlockingQueue: 基于数组的有界队列
    LinkedBlockingQueue: 基于链表的无界队列
    ProiporityBlockingQueue:基于优先次序的无界队列
    DelayQueue:基于时间优先级的队列
    SynchronousQueue:内部没有容器的队列 较特别 --其独有的线程一一配对通信机制


    queue.png

一些基本操作方法:

  • add 添加一个元素 如果队列已满 抛出illegalabException异常

  • offer 添加一个元素并返回true 如果队列已满 则返回false

  • put 添加一个元素 如果队列已满 则阻塞

  • remove 删除并返回队列头部元素 如果队列为空 则抛出一个NoSuchElementException

  • poll 移除并返回队列头部元素 如果队列为空 则返回null

  • take 删除并返回队列头部元素 如果队列为空 则阻塞

  • peek 返回队列头部元素 如果队列为空 则返回null

  • element 返回队列头部元素 如果队列为空 则抛出NoSuchElementException异常

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

相关阅读更多精彩内容

  • 前言 知识点整理来源于网络,个人只是单纯备份记录,如有侵权请联系本人处理( lvzhi1988@126.com )...
    草帽大爷阅读 1,643评论 0 0
  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,496评论 11 349
  • Queue接口与List、Set同一级别,都是继承了Collection接口。LinkedList实现了Queue...
    卖狗的苦瓜阅读 4,959评论 0 3
  • QGIS二次开发,调用公网地图,发现闪烁,有时候出现卡死。研究一下发现这是qgis的弊端,这点无法和openlay...
    cgscloud阅读 6,438评论 2 0
  • 南宋是一个政治上非常弱的朝代,比较有名的文人有辛弃疾、陆游、江淮等。 1.《满江红》是否岳飞的作品,这一...
    范范_嘟嘟阅读 3,897评论 0 0

友情链接更多精彩内容