Class LinkedTransferQueue<E>
- Type Parameters:
E- the type of elements held in this collection
- All Implemented Interfaces:
Iterable<E>, Collection<E>, BlockingQueue<E>, Queue<E>
- Direct Known Subclasses:
FlowControlLinkedTransferQueue
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 and its iterator implement all of the optional methods of the
Collection and Iterator interfaces.
Memory consistency effects: As with other concurrent collections, actions in a thread prior to
placing an object into a LinkedTransferQueue
happen-before actions subsequent to
the access or removal of that element from the LinkedTransferQueue in another thread.
- Author:
- Doug Lea, The Netty Project (netty-dev@lists.jboss.org), Trustin Lee (tlee@redhat.com)
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic final classPadded version of AtomicReference used for head, tail and cleanMe, to alleviate contention across threads CASing one vs the other. -
Constructor Summary
ConstructorsConstructorDescriptionCreates an initially empty LinkedTransferQueue.LinkedTransferQueue(Collection<? extends E> c) Creates a LinkedTransferQueue initially containing the elements of the given collection, added in traversal order of the collection's iterator. -
Method Summary
Modifier and TypeMethodDescriptionintdrainTo(Collection<? super E> c) intdrainTo(Collection<? super E> c, int maxElements) intbooleanbooleanisEmpty()iterator()booleanbooleanpeek()poll()voidintintsize()Returns the number of elements in this queue.take()voidbooleantryTransfer(E e) booleantryTransfer(E e, long timeout, TimeUnit unit) Methods inherited from class AbstractCollection
contains, containsAll, remove, removeAll, retainAll, toArray, toArray, toStringMethods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface BlockingQueue
add, contains, removeMethods inherited from interface Collection
addAll, clear, containsAll, equals, hashCode, parallelStream, removeAll, removeIf, retainAll, spliterator, stream, toArray, toArray, toArray
-
Constructor Details
-
LinkedTransferQueue
public LinkedTransferQueue()Creates an initially empty LinkedTransferQueue. -
LinkedTransferQueue
Creates a LinkedTransferQueue initially containing the elements of the given collection, added in traversal order of the collection's iterator.- Parameters:
c- the collection of elements to initially contain- Throws:
NullPointerException- if the specified collection or any of its elements are null
-
-
Method Details
-
put
- Specified by:
putin interfaceBlockingQueue<E>- Throws:
InterruptedException
-
offer
- Specified by:
offerin interfaceBlockingQueue<E>- Throws:
InterruptedException
-
offer
-
transfer
- Throws:
InterruptedException
-
tryTransfer
- Throws:
InterruptedException
-
tryTransfer
-
take
- Specified by:
takein interfaceBlockingQueue<E>- Throws:
InterruptedException
-
poll
- Specified by:
pollin interfaceBlockingQueue<E>- Throws:
InterruptedException
-
poll
-
drainTo
- Specified by:
drainToin interfaceBlockingQueue<E>
-
drainTo
- Specified by:
drainToin interfaceBlockingQueue<E>
-
iterator
-
peek
-
isEmpty
public boolean isEmpty()- Specified by:
isEmptyin interfaceCollection<E>- Overrides:
isEmptyin classAbstractCollection<E>
-
hasWaitingConsumer
public boolean hasWaitingConsumer() -
size
public int size()Returns the number of elements in this queue. If this queue contains more than Integer.MAX_VALUE elements, returns Integer.MAX_VALUE.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.
- Specified by:
sizein interfaceCollection<E>- Specified by:
sizein classAbstractCollection<E>- Returns:
- the number of elements in this queue
-
getWaitingConsumerCount
public int getWaitingConsumerCount() -
remainingCapacity
public int remainingCapacity()- Specified by:
remainingCapacityin interfaceBlockingQueue<E>
-