|
Build 1.0_r1(from source) | |||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectjava.util.AbstractCollection<E>
java.util.AbstractQueue<E>
java.util.concurrent.ConcurrentLinkedQueue<E>
E - the type of elements held in this collectionpublic class ConcurrentLinkedQueue<E>
An unbounded thread-safe 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. A ConcurrentLinkedQueue is an appropriate choice when many threads will share access to a common collection. This queue does not permit null elements.
This implementation employs an efficient "wait-free" algorithm based on one described in Simple, Fast, and Practical Non-Blocking and Blocking Concurrent Queue Algorithms by Maged M. Michael and Michael L. Scott.
Beware that, unlike in most collections, the size method is NOT a constant-time operation. Because of the asynchronous nature of these queues, determining the current number of elements requires a traversal of the elements.
This class implements all of the optional methods
of the Collection and Iterator interfaces.
| Constructor Summary | |
|---|---|
ConcurrentLinkedQueue()
Creates a ConcurrentLinkedQueue that is initially empty. |
|
ConcurrentLinkedQueue(Collection<? extends E> c)
Creates a ConcurrentLinkedQueue initially containing the elements of the given collection, added in traversal order of the collection's iterator. |
|
| Method Summary | ||
|---|---|---|
boolean |
add(E o)
Adds the specified element to the tail of this queue. |
|
boolean |
contains(Object o)
Searches this Collection for the specified object. |
|
(package private) java.util.concurrent.ConcurrentLinkedQueue.Node<E> |
first()
Returns the first actual (non-header) node on list. |
|
boolean |
isEmpty()
Returns true if the collection has no element, otherwise false. |
|
Iterator<E> |
iterator()
Returns an iterator over the elements in this queue in proper sequence. |
|
boolean |
offer(E o)
Inserts the specified element to the tail of this queue. |
|
E |
peek()
Gets but not removes the element in the head of the queue, or throws exception if there is no element in the queue. |
|
E |
poll()
Gets and removes the element in the head of the queue, or returns null if there is no element in the queue. |
|
boolean |
remove(Object o)
Removes the first occurrence of the specified object from this Collection. |
|
int |
size()
Returns the number of elements in this queue. |
|
Object[] |
toArray()
Returns a new array containing all elements contained in this Collection. |
|
|
toArray(T[] a)
Returns an array containing all elements contained in this Collection. |
|
| Methods inherited from class java.util.AbstractQueue |
|---|
addAll, clear, element, remove |
| Methods inherited from class java.util.AbstractCollection |
|---|
containsAll, removeAll, retainAll, toString |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
| Methods inherited from interface java.util.Queue |
|---|
element, remove |
| Methods inherited from interface java.util.Collection |
|---|
addAll, clear, containsAll, equals, hashCode, removeAll, retainAll |
| Constructor Detail |
|---|
public ConcurrentLinkedQueue()
public ConcurrentLinkedQueue(Collection<? extends E> c)
c - the collection of elements to initially contain
NullPointerException - if c or any element within it
is null| Method Detail |
|---|
public boolean add(E o)
add in interface Collection<E>add in class AbstractQueue<E>o - the element to add.
NullPointerException - if the specified element is nullpublic boolean offer(E o)
offer in interface Queue<E>o - the element to add.
NullPointerException - if the specified element is nullpublic E poll()
Queue
poll in interface Queue<E>public E peek()
Queue
peek in interface Queue<E>java.util.concurrent.ConcurrentLinkedQueue.Node<E> first()
public boolean isEmpty()
AbstractCollection
isEmpty in interface Collection<E>isEmpty in class AbstractCollection<E>Collection.size()public int size()
Beware that, unlike in most collections, this method is NOT a constant-time operation. Because of the asynchronous nature of these queues, determining the current number of elements requires an O(n) traversal.
size in interface Collection<E>size in class AbstractCollection<E>public boolean contains(Object o)
AbstractCollection
contains in interface Collection<E>contains in class AbstractCollection<E>o - the object to search for
object is an element of this Collection,
false otherwisepublic boolean remove(Object o)
AbstractCollection
remove in interface Collection<E>remove in class AbstractCollection<E>o - the object to remove
public Object[] toArray()
AbstractCollection
toArray in interface Collection<E>toArray in class AbstractCollection<E>public <T> T[] toArray(T[] a)
AbstractCollection
toArray in interface Collection<E>toArray in class AbstractCollection<E>a - the array
public Iterator<E> iterator()
ConcurrentModificationException,
and guarantees to traverse elements as they existed upon
construction of the iterator, and may (but is not guaranteed to)
reflect any modifications subsequent to construction.
iterator in interface Iterable<E>iterator in interface Collection<E>iterator in class AbstractCollection<E>Iterator
|
Build 1.0_r1(from source) | |||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||