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, wait
equals, hashCode, parallelStream, removeIf, spliterator, stream
protected 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)
Registerable
fallbackToSingleConsumerMode
in interface Registerable
public void registerConsumers(int consumers)
Registerable
registerConsumers
in interface Registerable
public void put(E e) throws InterruptedException
put
in interface BlockingQueue<E>
InterruptedException
public 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>
InterruptedException
public E take() throws InterruptedException
take
in interface BlockingQueue<E>
InterruptedException
public E poll(long timeout, TimeUnit unit) throws InterruptedException
poll
in interface BlockingQueue<E>
InterruptedException
public 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 © 2017. All rights reserved.