所有类


java.util.concurrent
类 LinkedBlockingQueue<E>

java.lang.Object
  继承者 java.util.AbstractCollection<E>
      继承者 java.util.AbstractQueue<E>
          继承者 java.util.concurrent.LinkedBlockingQueue<E>
类型参数:
E - 集合中所保存元素的类型。
所有已实现的接口:
Serializable, Iterable<E>, Collection<E>, BlockingQueue<E>, Queue<E>

public class LinkedBlockingQueue<E>
   
   
   
   
   
extends AbstractQueue<E>
implements BlockingQueue<E>, Serializable

一个基于已链接节点的、范围任意的 blocking queue。此队列按 FIFO(先进先出)排序元素。队列的头部 是在队列中时间最长的元素。队列的尾部 是在队列中时间最短的元素。新元素插入到队列的尾部,并且队列检索操作会获得位于队列头部的元素。链接队列的吞吐量通常要高于基于数组的队列,但是在大多数并发应用程序中,其可预知的性能要低。

可选的容量范围构造方法参数作为防止队列过度扩展的一种方法。如果未指定容量,则它等于 Integer.MAX_VALUE。除非插入节点会使队列超出容量,否则每次插入后会动态地创建链接节点。

此类及其迭代器实现 CollectionIterator 接口的所有可选 方法。

此类是 Java Collections Framework 的成员。

从以下版本开始:
1.5
另请参见:
序列化表格

构造方法摘要
LinkedBlockingQueue()
          创建一个容量为 Integer.MAX_VALUELinkedBlockingQueue
LinkedBlockingQueue(Collection<? extends E> c)
          创建一个容量是 Integer.MAX_VALUELinkedBlockingQueue,最初包含给定集合的元素,元素按该集合迭代器的遍历顺序添加。
LinkedBlockingQueue(int capacity)
          创建一个具有给定(固定)容量的 LinkedBlockingQueue
 
方法摘要
 void clear()
          从队列彻底移除所有元素。
 int drainTo(Collection<? super E> c)
          移除此队列中所有可用的元素,并将它们添加到给定 collection 中。
 int drainTo(Collection<? super E> c, int maxElements)
          最多从此队列中移除给定数量的可用元素,并将这些元素添加到给定 collection 中。
 Iterator<E> iterator()
          返回在队列中的元素上以正确顺序进行迭代的迭代器。
 boolean offer(E o)
          如果可能,在队列尾部插入指定的元素,如果队列已满则立即返回。
 boolean offer(E o, long timeout, TimeUnit unit)
          在队列尾插入指定的元素,如有必要,则等待指定的时间以使空间变得可用。
 E peek()
          检索,但是不移除此队列的头,如果此队列为空,则返回 null
 E poll()
          检索并移除此队列的头,如果此队列为空,则返回 null
 E poll(long timeout, TimeUnit unit)
          检索并移除此队列的头部,如果此队列中没有任何元素,则等待指定等待的时间(如果有必要)。
 void put(E o)
          将指定的元素添加到队列的尾部,如有必要,则等待空间变得可用。
 int remainingCapacity()
          返回理想情况下(没有内存和资源约束)此队列可接受并且不会被阻塞的元素数量。
 boolean remove(Object o)
          从此队列移除指定元素的单个实例(如果存在)。
 int size()
          返回队列中的元素个数。
 E take()
          检索并移除此队列的头部,如果此队列不存在任何元素,则一直等待。
 Object[] toArray()
          返回包含此 collection 中所有元素的数组。
<T> T[]
toArray(T[] a)
          返回包含此 collection 中所有元素的数组;返回数组的运行时类型是指定数组的类型。
 String toString()
          返回此 collection 的字符串表示形式。
 
从类 java.util.AbstractQueue 继承的方法
add, addAll, element, remove
 
从类 java.util.AbstractCollection 继承的方法
contains, containsAll, isEmpty, removeAll, retainAll
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
从接口 java.util.concurrent.BlockingQueue 继承的方法
add
 
从接口 java.util.Queue 继承的方法
element, remove
 
从接口 java.util.Collection 继承的方法
addAll, contains, containsAll, equals, hashCode, isEmpty, removeAll, retainAll
 

构造方法详细信息

LinkedBlockingQueue

public LinkedBlockingQueue()
创建一个容量为 Integer.MAX_VALUELinkedBlockingQueue


LinkedBlockingQueue

public LinkedBlockingQueue(int capacity)
创建一个具有给定(固定)容量的 LinkedBlockingQueue

参数:
capacity - 队列的容量。
抛出:
IllegalArgumentException - 如果 capacity 未大于 0。

LinkedBlockingQueue

public LinkedBlockingQueue(Collection<? extends E> c)
创建一个容量是 Integer.MAX_VALUELinkedBlockingQueue,最初包含给定集合的元素,元素按该集合迭代器的遍历顺序添加。

参数:
c - 最初所包含元素所属的集合。
抛出:
NullPointerException - 如果 c 或其中的任意元素为 null
方法详细信息

size

public int size()
返回队列中的元素个数。

指定者:
接口 Collection<E> 中的 size
指定者:
AbstractCollection<E> 中的 size
返回:
队列中的元素个数。

remainingCapacity

public int remainingCapacity()
返回理想情况下(没有内存和资源约束)此队列可接受并且不会被阻塞的元素数量。该数量总是等于此队列的初始容量,小于队列的当前 size

注意,不能 总是通过检查 remainingCapacity 来断定试图 add 一个元素是否成功,因为可能是等待的使用者已经准备好从一个已满的队列 take 某个元素。

指定者:
接口 BlockingQueue<E> 中的 remainingCapacity
返回:
剩余容量

put

public void put(E o)
         throws InterruptedException
将指定的元素添加到队列的尾部,如有必要,则等待空间变得可用。

指定者:
接口 BlockingQueue<E> 中的 put
参数:
o - 要添加的元素。
抛出:
InterruptedException - 如果在等待时中断。
NullPointerException - 如果指定的元素为 null

offer

public boolean offer(E o,
                     long timeout,
                     TimeUnit unit)
              throws InterruptedException
在队列尾插入指定的元素,如有必要,则等待指定的时间以使空间变得可用。

指定者:
接口 BlockingQueue<E> 中的 offer
参数:
o - 要添加的元素。
timeout - 放弃前等待多长时间,单位是 unit
unit - 确定如何解释 timeout 参数的 TimeUnit
返回:
如果成功,则返回 true;如果在空间可用前超出了指定的时间,则返回 false
抛出:
InterruptedException - 如果等待时中断。
NullPointerException - 如果指定的元素为 null

offer

public boolean offer(E o)
如果可能,在队列尾部插入指定的元素,如果队列已满则立即返回。

指定者:
接口 BlockingQueue<E> 中的 offer
指定者:
接口 Queue<E> 中的 offer
参数:
o - 要添加的元素。
返回:
如果可以向此队列添加元素,则返回 true;否则返回 false
抛出:
NullPointerException - 如果指定的元素为 null

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部