Package org.apache.tomcat.jdbc.pool
Class FairBlockingQueue<E>
- java.lang.Object
-
- org.apache.tomcat.jdbc.pool.FairBlockingQueue<E>
-
- Type Parameters:
E- Type of element in the queue
- All Implemented Interfaces:
Iterable<E>,Collection<E>,BlockingQueue<E>,Queue<E>
public class FairBlockingQueue<E> extends Object implements BlockingQueue<E>
A simple implementation of a blocking queue with fairness waiting. 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 theBlockingQueueare implemented.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected classFairBlockingQueue.ExchangeCountDownLatch<T>protected classFairBlockingQueue.FairIteratorprotected classFairBlockingQueue.ItemFuture<T>
-
Constructor Summary
Constructors Constructor Description FairBlockingQueue()Creates a new fair blocking queue.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description booleanadd(E e)booleanaddAll(Collection<? extends E> c)voidclear()booleancontains(Object e)booleancontainsAll(Collection<?> c)intdrainTo(Collection<? super E> c)intdrainTo(Collection<? super E> c, int maxElements)Eelement()booleanisEmpty()Iterator<E>iterator()booleanoffer(E e)Will always return true, queue is unbounded.booleanoffer(E e, long timeout, TimeUnit unit)Will never timeout, as it invokes theoffer(Object)method.Epeek()Epoll()Epoll(long timeout, TimeUnit unit)Fair retrieval of an object in the queue.Future<E>pollAsync()Request an item from the queue asynchronouslyvoidput(E e)intremainingCapacity()Eremove()booleanremove(Object e)booleanremoveAll(Collection<?> c)booleanretainAll(Collection<?> c)intsize()Etake()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
-
-
-
-
Method Detail
-
offer
public boolean offer(E e)
Will always return true, queue is unbounded.
-
offer
public boolean offer(E e, long timeout, TimeUnit unit) throws InterruptedException
Will never timeout, as it invokes theoffer(Object)method. Once a lock has been acquired, the- Specified by:
offerin interfaceBlockingQueue<E>- Throws:
InterruptedException
-
poll
public E poll(long timeout, TimeUnit unit) throws InterruptedException
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
public Future<E> pollAsync()
Request an item from the queue asynchronously- Returns:
- - a future pending the result from the queue poll request
-
remove
public boolean remove(Object e)
- Specified by:
removein interfaceBlockingQueue<E>- Specified by:
removein interfaceCollection<E>
-
size
public int size()
- Specified by:
sizein interfaceCollection<E>
-
contains
public boolean contains(Object e)
- Specified by:
containsin interfaceBlockingQueue<E>- Specified by:
containsin interfaceCollection<E>
-
add
public boolean add(E e)
- Specified by:
addin interfaceBlockingQueue<E>- Specified by:
addin interfaceCollection<E>- Specified by:
addin interfaceQueue<E>
-
drainTo
public int drainTo(Collection<? super E> c, int maxElements)
- Specified by:
drainToin interfaceBlockingQueue<E>- Throws:
UnsupportedOperationException- - this operation is not supported
-
drainTo
public int drainTo(Collection<? super E> c)
- Specified by:
drainToin interfaceBlockingQueue<E>- Throws:
UnsupportedOperationException- - this operation is not supported
-
put
public void put(E e) throws InterruptedException
- Specified by:
putin interfaceBlockingQueue<E>- Throws:
InterruptedException
-
remainingCapacity
public int remainingCapacity()
- Specified by:
remainingCapacityin interfaceBlockingQueue<E>
-
take
public E take() throws InterruptedException
- Specified by:
takein interfaceBlockingQueue<E>- Throws:
InterruptedException
-
addAll
public boolean addAll(Collection<? extends E> c)
- Specified by:
addAllin interfaceCollection<E>
-
clear
public void clear()
- Specified by:
clearin interfaceCollection<E>- Throws:
UnsupportedOperationException- - this operation is not supported
-
containsAll
public boolean containsAll(Collection<?> c)
- Specified by:
containsAllin interfaceCollection<E>- Throws:
UnsupportedOperationException- - this operation is not supported
-
isEmpty
public boolean isEmpty()
- Specified by:
isEmptyin interfaceCollection<E>
-
removeAll
public boolean removeAll(Collection<?> c)
- Specified by:
removeAllin interfaceCollection<E>- Throws:
UnsupportedOperationException- - this operation is not supported
-
retainAll
public boolean retainAll(Collection<?> c)
- Specified by:
retainAllin interfaceCollection<E>- Throws:
UnsupportedOperationException- - this operation is not supported
-
toArray
public Object[] 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
public E element()
- Specified by:
elementin interfaceQueue<E>- Throws:
UnsupportedOperationException- - this operation is not supported
-
peek
public E peek()
- Specified by:
peekin interfaceQueue<E>- Throws:
UnsupportedOperationException- - this operation is not supported
-
remove
public E remove()
- Specified by:
removein interfaceQueue<E>- Throws:
UnsupportedOperationException- - this operation is not supported
-
-