E
- public class MpscArrayQueue<E> extends ConcurrentCircularArrayQueue<E> implements QueueProgressIndicators
ConcurrentCircularArrayQueue
. This implies that
any thread may call the offer method, but only a single thread may call poll/peek for correctness to
maintained. buffer, mask, REF_BUFFER_PAD, SPARSE_SHIFT
Constructor and Description |
---|
MpscArrayQueue(int capacity) |
Modifier and Type | Method and Description |
---|---|
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 |
lvConsumerIndexCache() |
protected long |
lvProducerIndex() |
boolean |
offer(E e)
IMPLEMENTATION NOTES: Lock free offer using a single CAS. |
E |
peek() |
E |
poll() |
int |
size() |
protected void |
soConsumerIndex(long l) |
protected void |
svConsumerIndexCache(long v) |
int |
weakOffer(E e)
A wait free alternative to offer which fails on CAS failure.
|
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 boolean offer(E e)
offer
in interface Queue<E>
Queue.offer(java.lang.Object)
,
MessagePassingQueue.offer(Object)
public final int weakOffer(E e)
e
- new element, not nullpublic E poll()
IMPLEMENTATION NOTES:
Lock free poll using ordered loads/stores. As class name suggests access is limited to a single thread.
poll
in interface Queue<E>
Queue.poll()
,
MessagePassingQueue.poll()
public E peek()
IMPLEMENTATION NOTES:
Lock free peek using ordered loads. As class name suggests access is limited to a single thread.
peek
in interface Queue<E>
Queue.poll()
,
MessagePassingQueue.poll()
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 void soConsumerIndex(long l)
protected final long lvConsumerIndexCache()
protected final void svConsumerIndexCache(long v)
protected final long lvProducerIndex()
protected final boolean casProducerIndex(long expect, long newValue)
Copyright © 2013-2017. All Rights Reserved.