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:
Iterable<E>
,Collection<E>
,Queue<E>
- Direct Known Subclasses:
MpscLinkedQueue
,SpscLinkedQueue
A base data structure for concurrent linked queues.
-
Field Summary
FieldsModifier and TypeFieldDescription(package private) long
(package private) long
(package private) long
(package private) long
(package private) long
(package private) long
(package private) long
(package private) long
(package private) long
(package private) long
(package private) long
(package private) long
(package private) long
(package private) long
(package private) long
(package private) long
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 -
Method Summary
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
Methods inherited from interface java.util.Collection
contains, containsAll, equals, hashCode, parallelStream, remove, removeAll, removeIf, retainAll, spliterator, stream, toArray, toArray, toArray
-
Field Details
-
p00
long p00 -
p01
long p01 -
p02
long p02 -
p03
long p03 -
p04
long p04 -
p05
long p05 -
p06
long p06 -
p07
long p07 -
p30
long p30 -
p31
long p31 -
p32
long p32 -
p33
long p33 -
p34
long p34 -
p35
long p35 -
p36
long p36 -
p37
long p37
-
-
Constructor Details
-
BaseLinkedQueue
BaseLinkedQueue()
-
-
Method Details
-
iterator
- Specified by:
iterator
in interfaceCollection<E>
- Specified by:
iterator
in interfaceIterable<E>
- Specified by:
iterator
in classAbstractCollection<E>
-
size
public final int size()
IMPLEMENTATION NOTES:
This is an O(n) operation as we run through all the nodes and count them.- Specified by:
size
in interfaceCollection<E>
- Specified by:
size
in classAbstractCollection<E>
- See Also:
-
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 interfaceCollection<E>
- Overrides:
isEmpty
in classAbstractCollection<E>
- See Also:
-