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) long
p00
(package private) long
p01
(package private) long
p02
(package private) long
p03
(package private) long
p04
(package private) long
p05
(package private) long
p06
(package private) long
p07
(package private) long
p30
(package private) long
p31
(package private) long
p32
(package private) long
p33
(package private) long
p34
(package private) long
p35
(package private) long
p36
(package private) long
p37
-
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 boolean
isEmpty()
java.util.Iterator<E>
iterator()
int
size()
-
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:
isEmpty
in interfacejava.util.Collection<E>
- Overrides:
isEmpty
in classjava.util.AbstractCollection<E>
- See Also:
MessagePassingQueue.isEmpty()
-
-