Package rx.internal.util.unsafe
Class BaseLinkedQueue<E>
- java.lang.Object
-
- java.util.AbstractCollection<E>
-
- java.util.AbstractQueue<E>
-
- rx.internal.util.unsafe.BaseLinkedQueuePad0<E>
-
- rx.internal.util.unsafe.BaseLinkedQueueProducerNodeRef<E>
-
- rx.internal.util.unsafe.BaseLinkedQueuePad1<E>
-
- rx.internal.util.unsafe.BaseLinkedQueueConsumerNodeRef<E>
-
- rx.internal.util.unsafe.BaseLinkedQueue<E>
-
- Type Parameters:
E- the element type
- All Implemented Interfaces:
java.lang.Iterable<E>,java.util.Collection<E>,java.util.Queue<E>
- Direct Known Subclasses:
MpscLinkedQueue,SpscLinkedQueue
@SuppressAnimalSniffer abstract class BaseLinkedQueue<E> extends BaseLinkedQueueConsumerNodeRef<E>
A base data structure for concurrent linked queues.
-
-
Field Summary
Fields Modifier and Type Field Description (package private) longp00(package private) longp01(package private) longp02(package private) longp03(package private) longp04(package private) longp05(package private) longp06(package private) longp07(package private) longp30(package private) longp31(package private) longp32(package private) longp33(package private) longp34(package private) longp35(package private) longp36(package private) longp37-
Fields inherited from class rx.internal.util.unsafe.BaseLinkedQueueConsumerNodeRef
C_NODE_OFFSET, consumerNode
-
Fields inherited from class rx.internal.util.unsafe.BaseLinkedQueueProducerNodeRef
P_NODE_OFFSET, producerNode
-
-
Constructor Summary
Constructors Constructor Description BaseLinkedQueue()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description booleanisEmpty()java.util.Iterator<E>iterator()intsize()-
Methods inherited from class rx.internal.util.unsafe.BaseLinkedQueueConsumerNodeRef
lpConsumerNode, lvConsumerNode, spConsumerNode
-
Methods inherited from class rx.internal.util.unsafe.BaseLinkedQueueProducerNodeRef
lpProducerNode, lvProducerNode, spProducerNode
-
Methods inherited from class java.util.AbstractCollection
contains, containsAll, remove, removeAll, retainAll, toArray, toArray, toString
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
-
-
-
Method Detail
-
iterator
public final java.util.Iterator<E> iterator()
-
size
public final int size()
IMPLEMENTATION NOTES:
This is an O(n) operation as we run through all the nodes and count them.
-
isEmpty
public final boolean isEmpty()
IMPLEMENTATION NOTES:
Queue is empty when producerNode is the same as consumerNode. An alternative implementation would be to observe the producerNode.value is null, which also means an empty queue because only the consumerNode.value is allowed to be null.- Specified by:
isEmptyin interfacejava.util.Collection<E>- Overrides:
isEmptyin classjava.util.AbstractCollection<E>- See Also:
MessagePassingQueue.isEmpty()
-
-