Queue

 

常用的几种BlockingQueue:

  • ArrayBlockingQueue(int i):规定大小的BlockingQueue,其构造必须指定大小。其所含的对象是FIFO顺序排序的。

  • LinkedBlockingQueue()或者(int i):大小不固定的BlockingQueue,若其构造时指定大小,生成的BlockingQueue有大小限制,不指定大小,其大小有Integer.MAX_VALUE来决定。其所含的对象是FIFO顺序排序的。

  • PriorityBlockingQueue()或者(int i):类似于LinkedBlockingQueue,但是其所含对象的排序不是FIFO,而是依据对象的自然顺序或者构造函数的Comparator决定。

  • SynchronizedQueue():特殊的BlockingQueue,对其的操作必须是放和取交替完成。

Queue常用方法

  • add         增加一个元索                      如果队列已满,则抛出一个IIIegaISlabEepeplian异常
  • remove   移除并返回队列头部的元素     如果队列为空,则抛出一个NoSuchElementException异常
  • element  返回队列头部的元素              如果队列为空,则抛出一个NoSuchElementException异常
  • offer       添加一个元素并返回true        如果队列已满,则返回false
  • poll         移除并返问队列头部的元素     如果队列为空,则返回null
  • peek       返回队列头部的元素              如果队列为空,则返回null
  • put         添加一个元素                       如果队列满,则阻塞
  • take        移除并返回队列头部的元素    

 

java阻塞队列之ArrayBlockingQueue

谈谈LinkedBlockingQueue

  LinkedBlockingQueue的优点是锁分离,很适合生产和消费频率差不多的场景,这样生产和消费互不干涉的执行,能达到不错的效率

ArrayBlockingQueue跟LinkedBlockingQueue的区别

java并发容器分析

并发队列ConcurrentLinkedQueue和阻塞队列LinkedBlockingQueue用法

  BlockingQueue 接口实现的都是阻塞队列。而 ConcurrentLinkedQueue 是基于 CAS 和链表实现的无阻塞高性能队列。  

 

 

posted on 2020-07-07 17:18  焕然一鑫  阅读(112)  评论(0编辑  收藏  举报

导航