abstract class BaseSpscLinkedAtomicArrayQueue<E> extends BaseSpscLinkedAtomicArrayQueueProducerColdFields<E> implements QueueProgressIndicators, IndexedQueueSizeUtil.IndexedQueue
| Modifier and Type | Field and Description |
|---|---|
protected static java.lang.Object |
JUMP |
producerBuffer, producerBufferLimit, producerMaskP_INDEX_UPDATER, producerIndexp0, p1, p10, p11, p12, p13, p14, p15, p16, p17, p2, p3, p4, p5, p6, p7C_INDEX_UPDATER, consumerIndexconsumerBuffer, consumerMask| Constructor and Description |
|---|
BaseSpscLinkedAtomicArrayQueue() |
| Modifier and Type | Method and Description |
|---|---|
protected static <E> java.util.concurrent.atomic.AtomicReferenceArray<E> |
allocate(int capacity) |
protected static int |
calcElementOffset(long index,
long mask) |
long |
currentConsumerIndex()
This method has no concurrent visibility semantics.
|
long |
currentProducerIndex()
This method has no concurrent visibility semantics.
|
boolean |
isEmpty() |
java.util.Iterator<E> |
iterator() |
protected void |
linkOldToNew(long currIndex,
java.util.concurrent.atomic.AtomicReferenceArray<E> oldBuffer,
int offset,
java.util.concurrent.atomic.AtomicReferenceArray<E> newBuffer,
int offsetInNew,
E e) |
long |
lvConsumerIndex() |
protected E |
lvElement(java.util.concurrent.atomic.AtomicReferenceArray<E> buffer,
int offset) |
protected java.util.concurrent.atomic.AtomicReferenceArray<E> |
lvNextArrayAndUnlink(java.util.concurrent.atomic.AtomicReferenceArray curr) |
long |
lvProducerIndex() |
private E |
newBufferPeek(java.util.concurrent.atomic.AtomicReferenceArray<E> buffer,
long index) |
private E |
newBufferPoll(java.util.concurrent.atomic.AtomicReferenceArray<E> buffer,
long index) |
private int |
nextArrayOffset(java.util.concurrent.atomic.AtomicReferenceArray<E> curr) |
boolean |
offer(E e) |
protected abstract boolean |
offerColdPath(java.util.concurrent.atomic.AtomicReferenceArray<E> buffer,
long mask,
E e,
long pIndex,
int offset) |
E |
peek() |
E |
poll() |
int |
size() |
protected void |
soConsumerIndex(long v) |
private void |
soElement(java.util.concurrent.atomic.AtomicReferenceArray curr,
int i,
java.lang.Object e) |
protected void |
soNext(java.util.concurrent.atomic.AtomicReferenceArray<E> curr,
java.util.concurrent.atomic.AtomicReferenceArray<E> next) |
protected void |
soProducerIndex(long v) |
java.lang.String |
toString() |
protected void |
writeToQueue(java.util.concurrent.atomic.AtomicReferenceArray<E> buffer,
E e,
long index,
int offset) |
contains, containsAll, remove, removeAll, retainAll, toArray, toArrayclone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitprotected final void soProducerIndex(long v)
protected final void soConsumerIndex(long v)
public final long lvProducerIndex()
lvProducerIndex in interface IndexedQueueSizeUtil.IndexedQueuepublic final long lvConsumerIndex()
lvConsumerIndex in interface IndexedQueueSizeUtil.IndexedQueueprotected static <E> java.util.concurrent.atomic.AtomicReferenceArray<E> allocate(int capacity)
public final java.util.Iterator<E> iterator()
public java.lang.String toString()
toString in class java.util.AbstractCollection<E>public long currentProducerIndex()
QueueProgressIndicatorscurrentProducerIndex in interface QueueProgressIndicatorspublic long currentConsumerIndex()
QueueProgressIndicatorscurrentConsumerIndex in interface QueueProgressIndicatorsprotected final void soNext(java.util.concurrent.atomic.AtomicReferenceArray<E> curr, java.util.concurrent.atomic.AtomicReferenceArray<E> next)
private void soElement(java.util.concurrent.atomic.AtomicReferenceArray curr,
int i,
java.lang.Object e)
protected final java.util.concurrent.atomic.AtomicReferenceArray<E> lvNextArrayAndUnlink(java.util.concurrent.atomic.AtomicReferenceArray curr)
private int nextArrayOffset(java.util.concurrent.atomic.AtomicReferenceArray<E> curr)
public boolean offer(E e)
This implementation is correct for single producer thread use only.
offer in interface java.util.Queue<E>protected abstract boolean offerColdPath(java.util.concurrent.atomic.AtomicReferenceArray<E> buffer, long mask, E e, long pIndex, int offset)
protected final void linkOldToNew(long currIndex,
java.util.concurrent.atomic.AtomicReferenceArray<E> oldBuffer,
int offset,
java.util.concurrent.atomic.AtomicReferenceArray<E> newBuffer,
int offsetInNew,
E e)
protected final void writeToQueue(java.util.concurrent.atomic.AtomicReferenceArray<E> buffer, E e, long index, int offset)
public E poll()
This implementation is correct for single consumer thread use only.
poll in interface java.util.Queue<E>protected E lvElement(java.util.concurrent.atomic.AtomicReferenceArray<E> buffer, int offset)
protected static int calcElementOffset(long index,
long mask)
public E peek()
This implementation is correct for single consumer thread use only.
peek in interface java.util.Queue<E>private E newBufferPeek(java.util.concurrent.atomic.AtomicReferenceArray<E> buffer, long index)
private E newBufferPoll(java.util.concurrent.atomic.AtomicReferenceArray<E> buffer, long index)
public final int size()