首页 > 其他 > 详细

ArrayBlockingQueue

时间:2021-07-18 14:15:36      阅读:22      评论:0      收藏:0      [点我收藏+]

我们先来熟悉一下 ArrayBlockingQueue 中的几个重要的方法。

  • add(E e):把 e 加到 BlockingQueue 里,即如果 BlockingQueue 可以容纳,则返回 true,否则报异常 
  • offer(E e):表示如果可能的话,将 e 加到 BlockingQueue 里,即如果 BlockingQueue 可以容纳,则返回 true,否则返回 false 
  • put(E e):把 e 加到 BlockingQueue 里,如果 BlockQueue 没有空间,则调用此方法的线程被阻断直到 BlockingQueue 里面有空间再继续
  • poll(time):取走 BlockingQueue 里排在首位的对象,若不能立即取出,则可以等 time 参数规定的时间,取不到时返回 null 
  • take():取走 BlockingQueue 里排在首位的对象,若 BlockingQueue 为空,阻断进入等待状态直到 Blocking 有新的对象被加入为止 
  • remainingCapacity():剩余可用的大小。等于初始容量减去当前的 size

 

我们再来看一下 ArrayBlockingQueue 使用场景。

  • 先进先出队列(队列头的是最先进队的元素;队列尾的是最后进队的元素)
  • 有界队列(即初始化时指定的容量,就是队列最大的容量,不会出现扩容,容量满,则阻塞进队操作;容量空,则阻塞出队操作)
  • 队列不支持空元素.

看一下源码

  重要的属性

技术分享图片

 

 重要的方法

构造方法,ArrayBlockingQueue是一个用数组实现的环形队列,在构造方法中,会要求传入数组的容量。

技术分享图片

 其put/take方法也很简单,如下所示。

 put方法

技术分享图片

 

 技术分享图片

 

 take方法

技术分享图片

 

 

技术分享图片

 

 

以上内容皆取自jdk8.

ArrayBlockingQueue

原文:https://www.cnblogs.com/fuqiang-zhou/p/15026292.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!