Package org.apache.tomcat.jdbc.pool
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 classprotected classprotected class -
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()intintbooleanisEmpty()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 java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface java.util.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() -
getNextPoll
public int getNextPoll() -
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
-