E
- type of the element stored in the Queue
public class MpmcArrayQueue<E> extends ConcurrentSequencedCircularArrayQueue<E> implements QueueProgressIndicators
ConcurrentCircularArrayQueue
. This implies that
any and all threads may call the offer/poll/peek methods and correctness is maintained. SEQ_BUFFER_PAD, sequenceBuffer
buffer, mask, REF_BUFFER_PAD, SPARSE_SHIFT
Constructor and Description |
---|
MpmcArrayQueue(int capacity) |
Modifier and Type | Method and Description |
---|---|
protected boolean |
casConsumerIndex(long expect,
long newValue) |
protected boolean |
casProducerIndex(long expect,
long newValue) |
long |
currentConsumerIndex()
This method has no concurrent visibility semantics.
|
long |
currentProducerIndex()
This method has no concurrent visibility semantics.
|
boolean |
isEmpty() |
protected long |
lvConsumerIndex() |
protected long |
lvProducerIndex() |
boolean |
offer(E e) |
E |
peek() |
E |
poll() |
int |
size() |
calcSequenceOffset, calcSequenceOffset, lvSequence, soSequence
calcElementOffset, calcElementOffset, clear, iterator, lpElement, lpElement, lvElement, lvElement, soElement, soElement, spElement, spElement
add, addAll, element, remove
contains, containsAll, remove, removeAll, retainAll, toArray, toArray, toString
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
contains, containsAll, equals, hashCode, parallelStream, remove, removeAll, removeIf, retainAll, spliterator, stream, toArray, toArray
public E poll()
Because return null indicates queue is empty we cannot simply rely on next element visibility for poll and must test producer index when next element is not visible.
public int size()
size
in interface Collection<E>
size
in class AbstractCollection<E>
public boolean isEmpty()
isEmpty
in interface Collection<E>
isEmpty
in class AbstractCollection<E>
public long currentProducerIndex()
QueueProgressIndicators
currentProducerIndex
in interface QueueProgressIndicators
public long currentConsumerIndex()
QueueProgressIndicators
currentConsumerIndex
in interface QueueProgressIndicators
protected final long lvConsumerIndex()
protected final boolean casConsumerIndex(long expect, long newValue)
protected final long lvProducerIndex()
protected final boolean casProducerIndex(long expect, long newValue)
Copyright © 2013-2020. All Rights Reserved.