Class MPMCConcurrentQueue<E>
java.lang.Object
com.conversantmedia.util.concurrent.MPMCConcurrentQueue<E>
- All Implemented Interfaces:
ConcurrentQueue<E>
- Direct Known Subclasses:
MPMCBlockingQueue
Dmitry Vyukov, Bounded MPMC queue - http://www.1024cores.net/home/lock-free-algorithms/queues/bounded-mpmc-queue
Added for benchmarking and comparison. MultithreadConcurrentQueue performs better in the regimes I have tested.
Created by jcairns on 5/29/14.
-
Nested Class Summary
Nested Classes -
Field Summary
FieldsModifier and TypeFieldDescription(package private) final MPMCConcurrentQueue.Cell<E>[](package private) final ContendedAtomicLong(package private) final longprotected final int(package private) final ContendedAtomicLong -
Constructor Summary
ConstructorsConstructorDescriptionMPMCConcurrentQueue(int capacity) Construct a blocking queue of the given fixed capacity. -
Method Summary
Modifier and TypeMethodDescriptionintcapacity()voidclear()clear the queue of all elementsfinal booleanfinal booleanisEmpty()booleanAdd element t to the ringfinal Epeek()return the first element in the queuepoll()remove the first element from the queue and return itintreturn all elements in the queue to the provided array, up to the size of the provided array.final intsize()
-
Field Details
-
size
protected final int size -
mask
final long mask -
buffer
-
head
-
tail
-
-
Constructor Details
-
MPMCConcurrentQueue
public MPMCConcurrentQueue(int capacity) Construct a blocking queue of the given fixed capacity. Note: actual capacity will be the next power of two larger than capacity.- Parameters:
capacity- maximum capacity of this queue
-
-
Method Details
-
offer
Description copied from interface:ConcurrentQueueAdd element t to the ring- Specified by:
offerin interfaceConcurrentQueue<E>- Parameters:
e- - element to offer- Returns:
- boolean - true if the operation succeeded
-
poll
Description copied from interface:ConcurrentQueueremove the first element from the queue and return it- Specified by:
pollin interfaceConcurrentQueue<E>- Returns:
- T
-
peek
Description copied from interface:ConcurrentQueuereturn the first element in the queue- Specified by:
peekin interfaceConcurrentQueue<E>- Returns:
- E - The element
-
remove
Description copied from interface:ConcurrentQueuereturn all elements in the queue to the provided array, up to the size of the provided array.- Specified by:
removein interfaceConcurrentQueue<E>- Parameters:
e- - The element array- Returns:
- int - the number of elements added to t
-
size
public final int size()- Specified by:
sizein interfaceConcurrentQueue<E>- Returns:
- int - the number of elements in the queue
-
capacity
public int capacity()- Specified by:
capacityin interfaceConcurrentQueue<E>- Returns:
- int - the capacity of the queue
-
isEmpty
public final boolean isEmpty()- Specified by:
isEmptyin interfaceConcurrentQueue<E>- Returns:
- boolean - true if the queue is currently empty
-
clear
public void clear()Description copied from interface:ConcurrentQueueclear the queue of all elements- Specified by:
clearin interfaceConcurrentQueue<E>
-
contains
- Specified by:
containsin interfaceConcurrentQueue<E>- Parameters:
o- - the object to test- Returns:
- boolean - true if specified object is contained in the queue
-