Class MPMCBlockingQueue<E>
java.lang.Object
com.conversantmedia.util.concurrent.MPMCConcurrentQueue<E>
com.conversantmedia.util.concurrent.MPMCBlockingQueue<E>
- All Implemented Interfaces:
ConcurrentQueue<E>, Serializable, Iterable<E>, Collection<E>, BlockingQueue<E>, Queue<E>
public final class MPMCBlockingQueue<E>
extends MPMCConcurrentQueue<E>
implements Serializable, Iterable<E>, Collection<E>, BlockingQueue<E>, Queue<E>, ConcurrentQueue<E>
Alternative implementation for benchmarking purposes
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprivate final classprivate final classprivate final classprivate final classprivate final classprivate final classprivate final classNested classes/interfaces inherited from class MPMCConcurrentQueue
MPMCConcurrentQueue.Cell<R> -
Field Summary
Fields -
Constructor Summary
ConstructorsConstructorDescriptionMPMCBlockingQueue(int capacity) Construct a blocking queue of the given fixed capacity.MPMCBlockingQueue(int capacity, SpinPolicy spinPolicy) Construct a blocking queue with a given fixed capacityMPMCBlockingQueue(int capacity, Collection<? extends E> c) Construct a blocking queue of the given fixed capacity -
Method Summary
Modifier and TypeMethodDescriptionbooleanbooleanaddAll(Collection<? extends E> c) voidclear()clear the queue of all elementsbooleancontainsAll(Collection<?> c) intdrainTo(Collection<? super E> c) intdrainTo(Collection<? super E> c, int maxElements) element()private final booleanisFull()iterator()final booleanAdd element t to the ringbooleanfinal Epoll()remove the first element from the queue and return itvoidintremove()intreturn all elements in the queue to the provided array, up to the size of the provided array.booleanbooleanremoveAll(Collection<?> c) booleanretainAll(Collection<?> c) take()Object[]toArray()<T> T[]toArray(T[] a) Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface BlockingQueue
containsMethods inherited from interface Collection
equals, hashCode, isEmpty, parallelStream, removeIf, size, spliterator, stream, toArray
-
Field Details
-
queueNotFullCondition
-
queueNotEmptyCondition
-
-
Constructor Details
-
MPMCBlockingQueue
public MPMCBlockingQueue(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
-
MPMCBlockingQueue
Construct a blocking queue with a given fixed capacity
Note: actual capacity will be the next power of two larger than capacity. Waiting locking may be used in servers that are tuned for it, waiting locking provides a high performance locking implementation which is approximately a factor of 2 improvement in throughput (40M/s for 1-1 thread transfers) However waiting locking is more CPU aggressive and causes servers that may be configured with far too many threads to show very high load averages. This is probably not as detrimental as it is annoying.- Parameters:
capacity- - the queue capacity, suggest using a power of 2spinPolicy- - determine the level of cpu aggressiveness in waiting
-
MPMCBlockingQueue
Construct a blocking queue of the given fixed capacity
Note: actual capacity will be the next power of two larger than capacity.
The values from the collection, c, are appended to the queue in iteration order. If the number of elements in the collection exceeds the actual capacity, then the additional elements overwrite the previous ones until all elements have been written once.- Parameters:
capacity- maximum capacity of this queuec- A collection to use to populate inital values
-
-
Method Details
-
offer
Description copied from interface:ConcurrentQueueAdd element t to the ring- Specified by:
offerin interfaceBlockingQueue<E>- Specified by:
offerin interfaceConcurrentQueue<E>- Specified by:
offerin interfaceQueue<E>- Overrides:
offerin classMPMCConcurrentQueue<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>- Specified by:
pollin interfaceQueue<E>- Overrides:
pollin classMPMCConcurrentQueue<E>- Returns:
- T
-
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>- Overrides:
removein classMPMCConcurrentQueue<E>- Parameters:
e- - The element array- Returns:
- int - the number of elements added to t
-
remove
-
element
-
put
- Specified by:
putin interfaceBlockingQueue<E>- Throws:
InterruptedException
-
offer
- Specified by:
offerin interfaceBlockingQueue<E>- Throws:
InterruptedException
-
take
- Specified by:
takein interfaceBlockingQueue<E>- Throws:
InterruptedException
-
poll
- Specified by:
pollin interfaceBlockingQueue<E>- Throws:
InterruptedException
-
clear
public void clear()Description copied from interface:ConcurrentQueueclear the queue of all elements- Specified by:
clearin interfaceCollection<E>- Specified by:
clearin interfaceConcurrentQueue<E>- Overrides:
clearin classMPMCConcurrentQueue<E>
-
remainingCapacity
public int remainingCapacity()- Specified by:
remainingCapacityin interfaceBlockingQueue<E>
-
drainTo
- Specified by:
drainToin interfaceBlockingQueue<E>
-
drainTo
- Specified by:
drainToin interfaceBlockingQueue<E>
-
toArray
- Specified by:
toArrayin interfaceCollection<E>
-
toArray
public <T> T[] toArray(T[] a) - Specified by:
toArrayin interfaceCollection<E>
-
add
- Specified by:
addin interfaceBlockingQueue<E>- Specified by:
addin interfaceCollection<E>- Specified by:
addin interfaceQueue<E>
-
remove
- Specified by:
removein interfaceBlockingQueue<E>- Specified by:
removein interfaceCollection<E>
-
containsAll
- Specified by:
containsAllin interfaceCollection<E>
-
addAll
- Specified by:
addAllin interfaceCollection<E>
-
removeAll
- Specified by:
removeAllin interfaceCollection<E>
-
retainAll
- Specified by:
retainAllin interfaceCollection<E>
-
iterator
-
isFull
private final boolean isFull()
-