Class ThreadQueue
java.lang.Object
com.vividsolutions.jump.workbench.ui.renderer.ThreadQueue
This thread queue executes at maximum N Runnables in parallel
were N is a given number of worker threads that should be used.
If N threads are running and busy each further incoming
Runnable is queued until one of the threads has finished its current job.
If a worker thread becomes idle (no more job in the queue)
it is hold alive for 5 seconds. If during this period of time
no new Runnable is enqueued the worker thread dies.
- Author:
- Sascha L. Teichmann (sascha.teichmann@intevation.de)
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic interfaceIf the number of running threads goes down to zero implementations of this interface are able to be informed.protected classWorker thread. -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected booleanSingals that the ThreadQueue is going to quitprotected ArrayListList of Listenersprotected intmax.protected final LinkedListThe queue of Runnables jobs waiting to be runprotected int[]Number of running threadsprotected intNumber of threads that are currently idlestatic final longThe time a worker thread stays alive if idle -
Constructor Summary
ConstructorsConstructorDescriptionCreates a ThreadQueue with one worker thread.ThreadQueue(int maxRunningThreads) Creates a ThreadQueue with a given number of worker threads. -
Method Summary
Modifier and TypeMethodDescriptionvoidadd(ThreadQueue.Listener listener) Adds a Listener to this ThreadQueue.voidAdds a Runnables to the queue.voidclear()Empties the queue of waiting Runnables.voiddispose()Shuts down the ThreadQueue.protected voidInforms Listeners of the fact that the number of running threads went to zero.intThe number of currently running worker threads.voidremove(ThreadQueue.Listener listener) Removes a Listener from this ThreadQueue.intThe number of currently running worker threads.intThe number of currently waiting Runnables.intThe number of currently idle worker threads.
-
Field Details
-
WORKER_STAY_ALIVE_TIME
public static final long WORKER_STAY_ALIVE_TIMEThe time a worker thread stays alive if idle- See Also:
-
runningThreads
protected int[] runningThreadsNumber of running threads -
maxRunningThreads
protected int maxRunningThreadsmax. Number of threads running parallel -
waitingThreads
protected int waitingThreadsNumber of threads that are currently idle -
queuedRunnables
The queue of Runnables jobs waiting to be run -
disposed
protected boolean disposedSingals that the ThreadQueue is going to quit -
listeners
List of Listeners
-
-
Constructor Details
-
ThreadQueue
public ThreadQueue()Creates a ThreadQueue with one worker thread. -
ThreadQueue
public ThreadQueue(int maxRunningThreads) Creates a ThreadQueue with a given number of worker threads.- Parameters:
maxRunningThreads- the max. number of threads to be run parallel.
-
-
Method Details
-
add
Adds a Listener to this ThreadQueue.- Parameters:
listener- the listener to add.
-
remove
Removes a Listener from this ThreadQueue.- Parameters:
listener- the listener to be removed.
-
fireAllRunningThreadsFinished
protected void fireAllRunningThreadsFinished()Informs Listeners of the fact that the number of running threads went to zero. -
runningThreads
public int runningThreads()The number of currently running worker threads.- Returns:
- number of currently running worker threads.
-
getRunningThreads
public int getRunningThreads()The number of currently running worker threads. Alias for runningThreads()- Returns:
- number of currently running worker threads.
-
waitingRunnables
public int waitingRunnables()The number of currently waiting Runnables.- Returns:
- number of currently waiting Runnables.
-
waitingThreads
public int waitingThreads()The number of currently idle worker threads.- Returns:
- number of currently idle worker threads.
-
add
Adds a Runnables to the queue. It will be run in one of the worker threads.- Parameters:
runnable- The Runnables to add
-
clear
public void clear()Empties the queue of waiting Runnables. -
dispose
public void dispose()Shuts down the ThreadQueue.
-