Class MultiLockFairBlockingQueue<E>
java.lang.Object
org.apache.tomcat.jdbc.pool.MultiLockFairBlockingQueue<E>
- Type Parameters:
E- Type of element in the queue
- All Implemented Interfaces:
Iterable<E>, Collection<E>, BlockingQueue<E>, Queue<E>
EXPERIMENTAL AND NOT YET COMPLETE!
An implementation of a blocking queue with fairness waiting and lock dispersal to avoid contention.
invocations to method poll(...) will get handed out in the order they were received.
Locking is fine grained, a shared lock is only used during the first level of contention, waiting is done in a
lock per thread basis so that order is guaranteed once the thread goes into a suspended monitor state.
Not all of the methods of the
Not all of the methods of the
BlockingQueue are implemented.-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprotected classCount down latch that can exchange information.protected classIterator safe from concurrent modification exceptions.protected classFuture for an item in the queue. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionbooleanbooleanaddAll(Collection<? extends E> c) voidclear()booleanbooleancontainsAll(Collection<?> c) intdrainTo(Collection<? super E> c) intdrainTo(Collection<? super E> c, int maxElements) element()intGet the next poll index.intGet the next put index.booleanisEmpty()iterator()booleanWill always return true, queue is unbounded.booleanWill never timeout, as it invokes theoffer(Object)method.peek()poll()Fair retrieval of an object in the queue.Request an item from the queue asynchronouslyvoidintremove()booleanbooleanremoveAll(Collection<?> c) booleanretainAll(Collection<?> c) intsize()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 Collection
equals, hashCode, parallelStream, removeIf, spliterator, stream, toArray
-
Constructor Details
-
MultiLockFairBlockingQueue
public MultiLockFairBlockingQueue()Creates a new fair blocking queue.
-
-
Method Details
-
getNextPut
public int getNextPut()Get the next put index.- Returns:
- the next put index
-
getNextPoll
public int getNextPoll()Get the next poll index.- Returns:
- the next poll index
-
offer
-
offer
Will never timeout, as it invokes theoffer(Object)method. Once a lock has been acquired, the- Specified by:
offerin interfaceBlockingQueue<E>- Throws:
InterruptedException
-
poll
Fair retrieval of an object in the queue. Objects are returned in the order the threads requested them.- Specified by:
pollin interfaceBlockingQueue<E>- Throws:
InterruptedException
-
pollAsync
-
remove
- Specified by:
removein interfaceBlockingQueue<E>- Specified by:
removein interfaceCollection<E>
-
size
public int size()- Specified by:
sizein interfaceCollection<E>
-
iterator
-
poll
-
contains
- Specified by:
containsin interfaceBlockingQueue<E>- Specified by:
containsin interfaceCollection<E>
-
add
- Specified by:
addin interfaceBlockingQueue<E>- Specified by:
addin interfaceCollection<E>- Specified by:
addin interfaceQueue<E>
-
drainTo
- Specified by:
drainToin interfaceBlockingQueue<E>- Throws:
UnsupportedOperationException- - this operation is not supported
-
drainTo
- Specified by:
drainToin interfaceBlockingQueue<E>- Throws:
UnsupportedOperationException- - this operation is not supported
-
put
- Specified by:
putin interfaceBlockingQueue<E>- Throws:
InterruptedException
-
remainingCapacity
public int remainingCapacity()- Specified by:
remainingCapacityin interfaceBlockingQueue<E>
-
take
- Specified by:
takein interfaceBlockingQueue<E>- Throws:
InterruptedException
-
addAll
- Specified by:
addAllin interfaceCollection<E>
-
clear
public void clear()- Specified by:
clearin interfaceCollection<E>- Throws:
UnsupportedOperationException- - this operation is not supported
-
containsAll
- Specified by:
containsAllin interfaceCollection<E>- Throws:
UnsupportedOperationException- - this operation is not supported
-
isEmpty
public boolean isEmpty()- Specified by:
isEmptyin interfaceCollection<E>
-
removeAll
- Specified by:
removeAllin interfaceCollection<E>- Throws:
UnsupportedOperationException- - this operation is not supported
-
retainAll
- Specified by:
retainAllin interfaceCollection<E>- Throws:
UnsupportedOperationException- - this operation is not supported
-
toArray
- Specified by:
toArrayin interfaceCollection<E>- Throws:
UnsupportedOperationException- - this operation is not supported
-
toArray
public <T> T[] toArray(T[] a) - Specified by:
toArrayin interfaceCollection<E>- Throws:
UnsupportedOperationException- - this operation is not supported
-
element
- Specified by:
elementin interfaceQueue<E>- Throws:
UnsupportedOperationException- - this operation is not supported
-
peek
- Specified by:
peekin interfaceQueue<E>- Throws:
UnsupportedOperationException- - this operation is not supported
-
remove
- Specified by:
removein interfaceQueue<E>- Throws:
UnsupportedOperationException- - this operation is not supported
-