public class FancyBlockingQueue<E> extends Object implements BlockingQueue<E>, Registerable
| Modifier and Type | Field and Description |
|---|---|
protected BlockingQueue<E> |
backingQueue |
protected AtomicInteger |
barrier |
protected AtomicBoolean |
bypassMode |
protected int |
consumers |
protected AtomicInteger |
currentConsumers |
protected ThreadLocal<AtomicLong> |
currentStep |
protected boolean |
isDebug |
protected AtomicBoolean |
isDone |
protected AtomicBoolean |
isFirst |
protected ReentrantReadWriteLock |
lock |
protected AtomicInteger |
numElementsDrained |
protected AtomicInteger |
numElementsReady |
protected AtomicInteger |
secondary |
protected AtomicInteger |
state |
protected AtomicLong |
step |
| Constructor and Description |
|---|
FancyBlockingQueue(BlockingQueue<E> queue) |
FancyBlockingQueue(BlockingQueue<E> queue,
int consumers) |
| Modifier and Type | Method and Description |
|---|---|
boolean |
add(E e) |
boolean |
addAll(Collection<? extends E> c) |
void |
clear() |
boolean |
contains(Object o) |
boolean |
containsAll(Collection<?> c) |
int |
drainTo(Collection<? super E> c) |
int |
drainTo(Collection<? super E> c,
int maxElements) |
E |
element() |
void |
fallbackToSingleConsumerMode(boolean reallyFallback)
This method enables/disables bypass mode
|
boolean |
isEmpty() |
Iterator<E> |
iterator() |
boolean |
offer(E e) |
boolean |
offer(E e,
long timeout,
TimeUnit unit) |
E |
peek() |
E |
poll() |
E |
poll(long timeout,
TimeUnit unit) |
void |
put(E e) |
void |
registerConsumers(int consumers)
This method notifies producer about number of consumers for the current consumption cycle
|
int |
remainingCapacity() |
E |
remove() |
boolean |
remove(Object o) |
boolean |
removeAll(Collection<?> c) |
boolean |
retainAll(Collection<?> c) |
int |
size() |
protected void |
synchronize(int consumers) |
E |
take() |
Object[] |
toArray() |
<T> T[] |
toArray(T[] a) |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitequals, hashCode, parallelStream, removeIf, spliterator, streamprotected BlockingQueue<E> backingQueue
protected volatile int consumers
protected ThreadLocal<AtomicLong> currentStep
protected final AtomicLong step
protected final AtomicInteger state
protected final AtomicInteger currentConsumers
protected AtomicBoolean isFirst
protected AtomicBoolean isDone
protected AtomicInteger barrier
protected AtomicInteger secondary
protected AtomicInteger numElementsReady
protected AtomicInteger numElementsDrained
protected AtomicBoolean bypassMode
protected boolean isDebug
protected ReentrantReadWriteLock lock
public FancyBlockingQueue(@NonNull
BlockingQueue<E> queue)
public FancyBlockingQueue(@NonNull
BlockingQueue<E> queue,
int consumers)
public boolean add(E e)
add in interface Collection<E>add in interface BlockingQueue<E>add in interface Queue<E>public boolean offer(E e)
public void fallbackToSingleConsumerMode(boolean reallyFallback)
RegisterablefallbackToSingleConsumerMode in interface Registerablepublic void registerConsumers(int consumers)
RegisterableregisterConsumers in interface Registerablepublic void put(E e) throws InterruptedException
put in interface BlockingQueue<E>InterruptedExceptionpublic boolean isEmpty()
isEmpty in interface Collection<E>protected void synchronize(int consumers)
public void clear()
clear in interface Collection<E>public int size()
size in interface Collection<E>public boolean offer(E e, long timeout, TimeUnit unit) throws InterruptedException
offer in interface BlockingQueue<E>InterruptedExceptionpublic E take() throws InterruptedException
take in interface BlockingQueue<E>InterruptedExceptionpublic E poll(long timeout, TimeUnit unit) throws InterruptedException
poll in interface BlockingQueue<E>InterruptedExceptionpublic int remainingCapacity()
remainingCapacity in interface BlockingQueue<E>public boolean remove(Object o)
remove in interface Collection<E>remove in interface BlockingQueue<E>public boolean containsAll(Collection<?> c)
containsAll in interface Collection<E>public boolean addAll(Collection<? extends E> c)
addAll in interface Collection<E>public boolean removeAll(Collection<?> c)
removeAll in interface Collection<E>public boolean retainAll(Collection<?> c)
retainAll in interface Collection<E>public boolean contains(Object o)
contains in interface Collection<E>contains in interface BlockingQueue<E>public Object[] toArray()
toArray in interface Collection<E>public <T> T[] toArray(T[] a)
toArray in interface Collection<E>public int drainTo(Collection<? super E> c)
drainTo in interface BlockingQueue<E>public int drainTo(Collection<? super E> c, int maxElements)
drainTo in interface BlockingQueue<E>Copyright © 2018. All rights reserved.