public class HostLimitQueue extends java.util.concurrent.LinkedBlockingDeque<java.lang.Runnable>
Modifier and Type | Field and Description |
---|---|
private int |
hostLimit |
private java.util.Map<java.lang.String,java.util.concurrent.Semaphore> |
hostSemaphores |
private static long |
serialVersionUID |
Constructor and Description |
---|
HostLimitQueue(int hostLimit)
Creates an unbounded queue
|
Modifier and Type | Method and Description |
---|---|
private void |
acquireSemaphore(java.lang.Runnable job) |
private JCSCachedTileLoaderJob<?,?> |
findJob() |
private java.util.concurrent.Semaphore |
getSemaphore(JCSCachedTileLoaderJob<?,?> job) |
java.lang.Runnable |
poll(long timeout,
java.util.concurrent.TimeUnit unit) |
private void |
releaseSemaphore(JCSCachedTileLoaderJob<?,?> job) |
java.lang.Runnable |
take() |
private boolean |
tryAcquireSemaphore(JCSCachedTileLoaderJob<?,?> job) |
add, addFirst, addLast, clear, contains, descendingIterator, drainTo, drainTo, element, getFirst, getLast, iterator, offer, offer, offerFirst, offerFirst, offerLast, offerLast, peek, peekFirst, peekLast, poll, pollFirst, pollFirst, pollLast, pollLast, pop, push, put, putFirst, putLast, remainingCapacity, remove, remove, removeFirst, removeFirstOccurrence, removeLast, removeLastOccurrence, size, spliterator, takeFirst, takeLast, toArray, toArray, toString
containsAll, isEmpty, removeAll, retainAll
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
private static final long serialVersionUID
private final java.util.Map<java.lang.String,java.util.concurrent.Semaphore> hostSemaphores
private final int hostLimit
public HostLimitQueue(int hostLimit)
hostLimit
- how many parallel calls to host to allowprivate JCSCachedTileLoaderJob<?,?> findJob()
public java.lang.Runnable poll(long timeout, java.util.concurrent.TimeUnit unit) throws java.lang.InterruptedException
poll
in interface java.util.concurrent.BlockingDeque<java.lang.Runnable>
poll
in interface java.util.concurrent.BlockingQueue<java.lang.Runnable>
poll
in class java.util.concurrent.LinkedBlockingDeque<java.lang.Runnable>
java.lang.InterruptedException
public java.lang.Runnable take() throws java.lang.InterruptedException
take
in interface java.util.concurrent.BlockingDeque<java.lang.Runnable>
take
in interface java.util.concurrent.BlockingQueue<java.lang.Runnable>
take
in class java.util.concurrent.LinkedBlockingDeque<java.lang.Runnable>
java.lang.InterruptedException
private java.util.concurrent.Semaphore getSemaphore(JCSCachedTileLoaderJob<?,?> job)
private void acquireSemaphore(java.lang.Runnable job) throws java.lang.InterruptedException
java.lang.InterruptedException
private boolean tryAcquireSemaphore(JCSCachedTileLoaderJob<?,?> job)
private void releaseSemaphore(JCSCachedTileLoaderJob<?,?> job)