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
Modifier and TypeClassDescriptionprotected class
protected class
protected class
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionboolean
boolean
addAll
(Collection<? extends E> c) void
clear()
boolean
boolean
containsAll
(Collection<?> c) int
drainTo
(Collection<? super E> c) int
drainTo
(Collection<? super E> c, int maxElements) element()
int
int
boolean
isEmpty()
iterator()
boolean
Will always return true, queue is unbounded.boolean
Will never timeout, as it invokes theoffer(Object)
method.peek()
poll()
Fair retrieval of an object in the queue.Request an item from the queue asynchronouslyvoid
int
remove()
boolean
boolean
removeAll
(Collection<?> c) boolean
retainAll
(Collection<?> c) int
size()
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, wait
Methods 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
Will always return true, queue is unbounded. -
offer
Will never timeout, as it invokes theoffer(Object)
method. Once a lock has been acquired, the- Specified by:
offer
in 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:
poll
in interfaceBlockingQueue<E>
- Throws:
InterruptedException
-
pollAsync
Request an item from the queue asynchronously- Returns:
- - a future pending the result from the queue poll request
-
remove
- Specified by:
remove
in interfaceBlockingQueue<E>
- Specified by:
remove
in interfaceCollection<E>
-
size
public int size()- Specified by:
size
in interfaceCollection<E>
-
iterator
-
poll
-
contains
- Specified by:
contains
in interfaceBlockingQueue<E>
- Specified by:
contains
in interfaceCollection<E>
-
add
- Specified by:
add
in interfaceBlockingQueue<E>
- Specified by:
add
in interfaceCollection<E>
- Specified by:
add
in interfaceQueue<E>
-
drainTo
- Specified by:
drainTo
in interfaceBlockingQueue<E>
- Throws:
UnsupportedOperationException
- - this operation is not supported
-
drainTo
- Specified by:
drainTo
in interfaceBlockingQueue<E>
- Throws:
UnsupportedOperationException
- - this operation is not supported
-
put
- Specified by:
put
in interfaceBlockingQueue<E>
- Throws:
InterruptedException
-
remainingCapacity
public int remainingCapacity()- Specified by:
remainingCapacity
in interfaceBlockingQueue<E>
-
take
- Specified by:
take
in interfaceBlockingQueue<E>
- Throws:
InterruptedException
-
addAll
- Specified by:
addAll
in interfaceCollection<E>
-
clear
public void clear()- Specified by:
clear
in interfaceCollection<E>
- Throws:
UnsupportedOperationException
- - this operation is not supported
-
containsAll
- Specified by:
containsAll
in interfaceCollection<E>
- Throws:
UnsupportedOperationException
- - this operation is not supported
-
isEmpty
public boolean isEmpty()- Specified by:
isEmpty
in interfaceCollection<E>
-
removeAll
- Specified by:
removeAll
in interfaceCollection<E>
- Throws:
UnsupportedOperationException
- - this operation is not supported
-
retainAll
- Specified by:
retainAll
in interfaceCollection<E>
- Throws:
UnsupportedOperationException
- - this operation is not supported
-
toArray
- Specified by:
toArray
in interfaceCollection<E>
- Throws:
UnsupportedOperationException
- - this operation is not supported
-
toArray
public <T> T[] toArray(T[] a) - Specified by:
toArray
in interfaceCollection<E>
- Throws:
UnsupportedOperationException
- - this operation is not supported
-
element
- Specified by:
element
in interfaceQueue<E>
- Throws:
UnsupportedOperationException
- - this operation is not supported
-
peek
- Specified by:
peek
in interfaceQueue<E>
- Throws:
UnsupportedOperationException
- - this operation is not supported
-
remove
- Specified by:
remove
in interfaceQueue<E>
- Throws:
UnsupportedOperationException
- - this operation is not supported
-