• LinkedBlockingQueueE(示例,出错代码)


    java.util.concurrent

    类 LinkedBlockingQueue<E>

    java.lang.Object
      
    继承者
    java.util.AbstractCollection<E>
          
    继承者
    java.util.AbstractQueue<E>
              
    继承者
    java.util.concurrent.LinkedBlockingQueue<E>
    
    类型参数:
    E - the type of elements held in this collection
    所有已实现的接口:
    Serializable, Iterable<E>, Collection<E>, BlockingQueue<E>, Queue<E>

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

    An optionally-bounded blocking queue based on linked nodes. This queue orders elements FIFO (first-in-first-out). The head of the queue is that element that has been on the queue the longest time. The tail of the queue is that element that has been on the queue the shortest time. New elements are inserted at the tail of the queue, and the queue retrieval operations obtain elements at the head of the queue. Linked queues typically have higher throughput than array-based queues but less predictable performance in most concurrent applications.

    The optional capacity bound constructor argument serves as a way to prevent excessive queue expansion. The capacity, if unspecified, is equal to Integer.MAX_VALUE. Linked nodes are dynamically created upon each insertion unless this would bring the queue above capacity.

    This class implements all of the optional methods of the Collection and Iterator interfaces.

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

    构造方法摘要
    LinkedBlockingQueue() 
              Creates a LinkedBlockingQueue with a capacity of Integer.MAX_VALUE.
    LinkedBlockingQueue(Collection<? extends E> c) 
              Creates a LinkedBlockingQueue with a capacity of Integer.MAX_VALUE, initially containing the elements of the given collection, added in traversal order of the collection's iterator.
    LinkedBlockingQueue(int capacity) 
              Creates a LinkedBlockingQueue with the given (fixed) capacity.
     
    方法摘要
     void clear() 
              Removes all elements of the queue, leaving it empty.
     int drainTo(Collection<? super E> c) 
              Removes all available elements from this queue and adds them into the given collection.
     int drainTo(Collection<? super E> c, int maxElements) 
              Removes at most the given number of available elements from this queue and adds them into the given collection.
     Iterator<E> iterator() 
              Returns an iterator over the elements in this queue in proper sequence.
     boolean offer(E o) 
              Inserts the specified element at the tail of this queue if possible, returning immediately if this queue is full.
     boolean offer(E o, long timeout, TimeUnit unit) 
              Inserts the specified element at the tail of this queue, waiting if necessary up to the specified wait time for space to become available.
     E peek() 
              Gets but does not remove the element at the head of the queue.
     E poll() 
              Gets and removes the element at the head of the queue, or returns null if there is no element in the queue.
     E poll(long timeout, TimeUnit unit) 
              Retrieves and removes the head of this queue, waiting if necessary up to the specified wait time if no elements are present on this queue.
     void put(E o) 
              Adds the specified element to the tail of this queue, waiting if necessary for space to become available.
     int remainingCapacity() 
              Returns the number of elements that this queue can ideally (in the absence of memory or resource constraints) accept without blocking.
     boolean remove(Object o) 
              Removes one instance of the specified object from this Collection if one is contained (optional).
     int size() 
              Returns the number of elements in this queue.
     E take() 
              Retrieves and removes the head of this queue, waiting if no elements are present on this queue.
     Object[] toArray() 
              Returns a new array containing all elements contained in this Collection.
    <T> T[]
    toArray(T[] a) 
              Returns an array containing all elements contained in this Collection.
     String toString() 
              Returns the string representation of this Collection.
     
    从类 java.util.AbstractQueue 继承的方法
    add, addAll, element, remove
     
    从类 java.util.AbstractCollection 继承的方法
    contains, containsAll, isEmpty, removeAll, retainAll
     
    从类 java.lang.Object 继承的方法
    equals, 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()
    Creates a LinkedBlockingQueue with a capacity of Integer.MAX_VALUE.

    LinkedBlockingQueue

    public LinkedBlockingQueue(int capacity)
    Creates a LinkedBlockingQueue with the given (fixed) capacity.
    参数:
    capacity - the capacity of this queue.
    抛出:
    IllegalArgumentException - if capacity is not greater than zero.

    LinkedBlockingQueue

    public LinkedBlockingQueue(Collection<? extends E> c)
    Creates a LinkedBlockingQueue with a capacity of Integer.MAX_VALUE, initially containing the elements of the given collection, added in traversal order of the collection's iterator.
    参数:
    c - the collection of elements to initially contain
    抛出:
    NullPointerException - if c or any element within it is null
    方法详细信息

    size

    public int size()
    Returns the number of elements in this queue.
    指定者:
    接口 Collection<E> 中的 size
    指定者:
    类 AbstractCollection<E> 中的 size
    返回:
    the number of elements in this queue.

    remainingCapacity

    public int remainingCapacity()
    Returns the number of elements that this queue can ideally (in the absence of memory or resource constraints) accept without blocking. This is always equal to the initial capacity of this queue less the current size of this queue.

    Note that you cannot always tell if an attempt to add an element will succeed by inspecting remainingCapacity because it may be the case that a waiting consumer is ready to take an element out of an otherwise full queue.

    指定者:
    接口 BlockingQueue<E> 中的 remainingCapacity
    返回:
    the remaining capacity

    put

    public void put(E o)
             throws InterruptedException
    Adds the specified element to the tail of this queue, waiting if necessary for space to become available.
    指定者:
    接口 BlockingQueue<E> 中的 put
    参数:
    o - the element to add
    抛出:
    InterruptedException - if interrupted while waiting.
    NullPointerException - if the specified element is null.

    offer

    public boolean offer(E o,
                         long timeout,
                         TimeUnit unit)
                  throws InterruptedException
    Inserts the specified element at the tail of this queue, waiting if necessary up to the specified wait time for space to become available.
    指定者:
    接口 BlockingQueue<E> 中的 offer
    参数:
    o - the element to add
    timeout - how long to wait before giving up, in units of unit
    unit - a TimeUnit determining how to interpret the timeout parameter
    返回:
    true if successful, or false if the specified waiting time elapses before space is available.
    抛出:
    InterruptedException - if interrupted while waiting.
    NullPointerException - if the specified element is null.

    offer

    public boolean offer(E o)
    Inserts the specified element at the tail of this queue if possible, returning immediately if this queue is full.
    指定者:
    接口 BlockingQueue<E> 中的 offer
    指定者:
    接口 Queue<E> 中的 offer
    参数:
    o - the element to add.
    返回:
    true if it was possible to add the element to this queue, else false
    抛出:
    NullPointerException - if the specified element is null

    take

    public E take()
           throws InterruptedException
    从接口 BlockingQueue 复制的描述
    Retrieves and removes the head of this queue, waiting if no elements are present on this queue.
    指定者:
    接口 BlockingQueue<E> 中的 take
    返回:
    the head of this queue
    抛出:
    InterruptedException - if interrupted while waiting.

    poll

    public E poll(long timeout,
                  TimeUnit unit)
           throws InterruptedException
    从接口 BlockingQueue 复制的描述
    Retrieves and removes the head of this queue, waiting if necessary up to the specified wait time if no elements are present on this queue.
    指定者:
    接口 BlockingQueue<E> 中的 poll
    参数:
    timeout - how long to wait before giving up, in units of unit
    unit - a TimeUnit determining how to interpret the timeout parameter
    返回:
    the head of this queue, or null if the specified waiting time elapses before an element is present.
    抛出:
    InterruptedException - if interrupted while waiting.

    poll

    public E poll()
    从接口 Queue 复制的描述
    Gets and removes the element at the head of the queue, or returns null if there is no element in the queue.
    指定者:
    接口 Queue<E> 中的 poll
    返回:
    the element at the head of the queue or null if there is no element in the queue.

    peek

    public E peek()
    从接口 Queue 复制的描述
    Gets but does not remove the element at the head of the queue.
    指定者:
    接口 Queue<E> 中的 peek
    返回:
    the element at the head of the queue or null if there is no element in the queue.

    remove

    public boolean remove(Object o)
    从类 AbstractCollection 复制的描述
    Removes one instance of the specified object from this Collection if one is contained (optional). This implementation iterates over this Collection and tests for each element e returned by the iterator, whether e is equal to the given object. If object != null then this test is performed using object.equals(e), otherwise using object == null. If an element equal to the given object is found, then the remove method is called on the iterator and true is returned, false otherwise. If the iterator does not support removing elements, an UnsupportedOperationException is thrown.
    指定者:
    接口 Collection<E> 中的 remove
    覆盖:
    类 AbstractCollection<E> 中的 remove
    参数:
    o - the object to remove.
    返回:
    true if this Collection is modified, false otherwise.

    toArray

    public Object[] toArray()
    从接口 Collection 复制的描述
    Returns a new array containing all elements contained in this Collection. If the implementation has ordered elements it will return the element array in the same order as an iterator would return them. The array returned does not reflect any changes of the Collection. A new array is created even if the underlying data structure is already an array.
    指定者:
    接口 Collection<E> 中的 toArray
    覆盖:
    类 AbstractCollection<E> 中的 toArray
    返回:
    an array of the elements from this Collection.

    toArray

    public <T> T[] toArray(T[] a)
    从接口 Collection 复制的描述
    Returns an array containing all elements contained in this Collection. If the specified array is large enough to hold the elements, the specified array is used, otherwise an array of the same type is created. If the specified array is used and is larger than this Collection, the array element following the Collection elements is set to null. If the implementation has ordered elements it will return the element array in the same order as an iterator would return them. toArray(new Object[0]) behaves exactly the same way as toArray() does.
    指定者:
    接口 Collection<E> 中的 toArray
    覆盖:
    类 AbstractCollection<E> 中的 toArray
    参数:
    a - the array.
    返回:
    an array of the elements from this Collection.

    toString

    public String toString()
    从类 AbstractCollection 复制的描述
    Returns the string representation of this Collection. The presentation has a specific format. It is enclosed by square brackets ("[]"). Elements are separated by ', ' (comma and space).
    覆盖:
    类 AbstractCollection<E> 中的 toString
    返回:
    the string representation of this Collection.

    clear

    public void clear()
    从类 AbstractQueue 复制的描述
    Removes all elements of the queue, leaving it empty.
    指定者:
    接口 Collection<E> 中的 clear
    覆盖:
    类 AbstractQueue<E> 中的 clear
    另请参见:
    AbstractCollection.iterator(), AbstractCollection.isEmpty(), AbstractCollection.size()

    drainTo

    public int drainTo(Collection<? super E> c)
    从接口 BlockingQueue 复制的描述
    Removes all available elements from this queue and adds them into the given collection. This operation may be more efficient than repeatedly polling this queue. A failure encountered while attempting to add elements to collection c may result in elements being in neither, either or both collections when the associated exception is thrown. Attempts to drain a queue to itself result in IllegalArgumentException. Further, the behavior of this operation is undefined if the specified collection is modified while the operation is in progress.
    指定者:
    接口 BlockingQueue<E> 中的 drainTo
    参数:
    c - the collection to transfer elements into
    返回:
    the number of elements transferred.

    drainTo

    public int drainTo(Collection<? super E> c,
                       int maxElements)
    从接口 BlockingQueue 复制的描述
    Removes at most the given number of available elements from this queue and adds them into the given collection. A failure encountered while attempting to add elements to collection c may result in elements being in neither, either or both collections when the associated exception is thrown. Attempts to drain a queue to itself result inIllegalArgumentException. Further, the behavior of this operation is undefined if the specified collection is modified while the operation is in progress.
    指定者:
    接口 BlockingQueue<E> 中的 drainTo
    参数:
    c - the collection to transfer elements into
    maxElements - the maximum number of elements to transfer
    返回:
    the number of elements transferred.

    iterator

    public Iterator<E> iterator()
    Returns an iterator over the elements in this queue in proper sequence.The returned Iterator is a "weakly consistent" iterator thatwill never throw ConcurrentModificationException,and guarantees to traverse elements as they existed uponconstruction of the iterator, and may (but is not guaranteed to)reflect any modifications subsequent to construction.
    指定者:
    接口 Iterable<E> 中的 iterator
    指定者:
    接口 Collection<E> 中的 iterator
    指定者:
    类 AbstractCollection<E> 中的 iterator
    返回:
    an iterator over the elements in this queue in proper sequence.

    上一篇:FutureTaskV

    下一篇:PriorityBlockingQueueE

  • 相关阅读:
    BZOJ2809: [Apio2012]dispatching
    BZOJ1455: 罗马游戏
    可并堆试水--BZOJ1367: [Baltic2004]sequence
    可并堆模板
    Codeforces870F. Paths
    Codeforces913F. Strongly Connected Tournament
    一练Splay之维修数列第一次
    Codeforces913E. Logical Expression
    Codeforces700C. Break Up
    可持久化KMP
  • 原文地址:https://www.cnblogs.com/xgjblog/p/6203186.html
Copyright © 2020-2023  润新知