zoukankan      html  css  js  c++  java
  • 24_BlockingQueue接口

    【BlockingQueue常见】

    [ ArrayBlockingQueue ]

    基于数组的阻塞队列的实现,在ArrayBlockingQueue内部,维护了一个定长数组,以便缓存队列中的数据对象,其内部没实现读写分离,也就意味着生产者和消费者不能完全并行,长度需要自定义,可以指定先进先出或者先进后出,也成为有界队列,在很多场合都非常适合使用。

    [ LinkedBlockingQueue ]

    基于链表的阻塞队列,与ArrayBlockingQueue类似,其内部维持着一个数据缓存队列(该队列由一个链表构成),LinkedBlockingQueue之所以能够高效地处理并发数据,是因为其内部实现采用分离锁(读写分离两个锁),从而实现生产者和消费者操作完全并行运行,它是一个无界队列。

    [ PriorityBlockingQueue ]

    基于优先级的阻塞队列(优先级的判断通过构造方法传入的Comparator对象来决定,即传入队列的对象必须实现Comparator接口),在实现PriorityBlockingQueue时,内部控制线程同步的锁采用的是公平锁,它也是一个无界队列。

    [ DelayQueue ]

    带延迟时间的队列。其中的元素只有当其指定的延迟时间到了,才能够从队列中获取到该元素。DelayQueue中的元素必须实现Delayed接口,DelayQueue没有大小限制的队列,应用场景很多,比如对缓存超时的数据进行移除,任务超时处理,空闲连接的关闭。

    [ SynchronizedQueue ]

    一种没有缓存的队列,生产者产生的数据会直接被消费者获取并且消费。

  • 相关阅读:
    数据快照
    2.21毕设进度
    2.20毕设进度
    Java读取文件,明明文件存在,却报错文件找不到
    2.19毕设进度
    2.18毕设进度
    2.17毕设进度
    2.16毕设进度
    2.15毕设进度
    2.14毕设进度
  • 原文地址:https://www.cnblogs.com/HigginCui/p/7667715.html
Copyright © 2011-2022 走看看