java中ArrayBlockingQueue集合介绍

ArrayBlocking 是一个阻塞共享队列;

1.对比offer()与put()方法 :

        offer(anObject):表示如果可能的话,将anObject加到BlockingQueue里,即如果BlockingQueue可以容纳,则返回true,否则返回false.(本方法不阻塞当前执行方法的线程)

  offer(E o, long timeout, TimeUnit unit),可以设定等待的时间,如果在指定的时间内,还不能往队列中加入BlockingQueue,则返回失败。

put(anObject):把anObject加到BlockingQueue里,如果BlockQueue没有空间,则调用此方法的线程被阻断直到BlockingQueue里面有空间再继续.

2.对比poll()方法与take()方法

        poll(time):取走BlockingQueue里排在首位的对象,若不能立即取出,则可以等time参数规定的时间(如下介绍),取不到时返回null;(不会造成阻塞)

  poll(long timeout, TimeUnit unit):从BlockingQueue取出一个队首的对象,如果在指定时间内,队列一旦有数据可取,则立即返回队列中的数据。否则知道时间超时还没有数据可取,返回失败。

  take():取走BlockingQueue里排在首位的对象,若BlockingQueue为空,阻断进入等待状态直到BlockingQueue有新的数据被加入;

  *drainTo():一次性从BlockingQueue获取所有可用的数据对象(还可以指定获取数据的个数),通过该方法,可以提升获取数据效率;不需要多次分批加锁或释放锁。

方法摘要
 boolean add(E e)
          将指定的元素插入到此队列的尾部(如果立即可行且不会超过该队列的容量),在成功时返回 true,如果此队列已满,则抛出 IllegalStateException。
 void clear()
          自动移除此队列中的所有元素。
 boolean contains(Object o)
          如果此队列包含指定的元素,则返回 true。
 int drainTo(Collection<? super E> c)
          移除此队列中所有可用的元素,并将它们添加到给定 collection 中。
 int drainTo(Collection<? super E> c, int maxElements)
          最多从此队列中移除给定数量的可用元素,并将这些元素添加到给定 collection 中。
 Iterator<E> iterator()
          返回在此队列中的元素上按适当顺序进行迭代的迭代器。
 boolean offer(E e)
          将指定的元素插入到此队列的尾部(如果立即可行且不会超过该队列的容量),在成功时返回 true,如果此队列已满,则返回 false。
 boolean offer(E e, long timeout, TimeUnit unit)
          将指定的元素插入此队列的尾部,如果该队列已满,则在到达指定的等待时间之前等待可用的空间。
 E peek()
          获取但不移除此队列的头;如果此队列为空,则返回 null。
 E poll()
          获取并移除此队列的头,如果此队列为空,则返回 null。
 E poll(long timeout, TimeUnit unit)
          获取并移除此队列的头部,在指定的等待时间前等待可用的元素(如果有必要)。
 void put(E e)
          将指定的元素插入此队列的尾部,如果该队列已满,则等待可用的空间。
 int remainingCapacity()
          返回在无阻塞的理想情况下(不存在内存或资源约束)此队列能接受的其他元素数量。
 boolean remove(Object o)
          从此队列中移除指定元素的单个实例(如果存在)。
 int size()
          返回此队列中元素的数量。
 E take()
          获取并移除此队列的头部,在元素变得可用之前一直等待(如果有必要)。
 Object[] toArray()
          返回一个按适当顺序包含此队列中所有元素的数组。
<T> T[]
toArray(T[] a)
          返回一个按适当顺序包含此队列中所有元素的数组;返回数组的运行时类型是指定数组的运行时类型。
 String toString()
          返回此 collection 的字符串表示形式。

猜你喜欢

转载自blog.csdn.net/qq_36055407/article/details/81173086
今日推荐