Class ThreadPool
- java.lang.Object
-
- org.sblim.cimclient.internal.util.ThreadPool
-
public class ThreadPool extends java.lang.ObjectClass ThreadPool implements a pool that manages threads and executes submitted tasks using this threads.
-
-
Constructor Summary
Constructors Constructor Description ThreadPool(int pMinPoolSize, int pMaxPoolSize, int pToleratedBacklog, long pToleratedIdle, java.lang.ThreadGroup pGroup, java.lang.String pWorkerName)Ctor
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description booleanexecute(java.lang.Runnable task)Submits a task for executionprotected java.lang.ThreadGroupgetGroup()Gets the associated thread groupjava.lang.RunnablegetNextTask(org.sblim.cimclient.internal.util.ThreadPool.Worker worker)Get a new task.protected voidremoveWorker(org.sblim.cimclient.internal.util.ThreadPool.Worker worker)Removes a worker from the pool.voidshutdown()Shuts down the thread pool and all workersvoidtaskCompleted()Notifies the pool that at task was completed.voidtaskStarted()Notifies the pool that at task was started.
-
-
-
Constructor Detail
-
ThreadPool
public ThreadPool(int pMinPoolSize, int pMaxPoolSize, int pToleratedBacklog, long pToleratedIdle, java.lang.ThreadGroup pGroup, java.lang.String pWorkerName)Ctor- Parameters:
pMinPoolSize- The minimal pool size. The pool will always keep at least this number of worker threads alive even in no load situations.pMaxPoolSize- The maximal pool size. The pool will create up to that number of worker threads on heavy load.pToleratedBacklog- The task backlog that is tolerated before an additional worker is createdpToleratedIdle- The idle time of a worker that is tolerated before the worker is destroyedpGroup- Then thread group to put the worker threads inpWorkerName- The name to use for worker threads
-
-
Method Detail
-
execute
public boolean execute(java.lang.Runnable task)
Submits a task for execution- Parameters:
task- The task- Returns:
trueif the task was executed or enqueued,falseotherwise.
-
removeWorker
protected void removeWorker(org.sblim.cimclient.internal.util.ThreadPool.Worker worker)
Removes a worker from the pool.- Parameters:
worker- The worker
-
getGroup
protected java.lang.ThreadGroup getGroup()
Gets the associated thread group- Returns:
- The thread group
-
getNextTask
public java.lang.Runnable getNextTask(org.sblim.cimclient.internal.util.ThreadPool.Worker worker) throws java.lang.InterruptedExceptionGet a new task. If no task was available during the timeout period the calling worker might be killed if more than the minimum number of workers exist- Parameters:
worker- The worker asking for a new task- Returns:
- The next available task from the queue. If no task is available waits for idle timeout and returns null afterwards.
- Throws:
java.lang.InterruptedException- on interrupt
-
taskStarted
public void taskStarted()
Notifies the pool that at task was started. Effectively decrements the idle worker count.
-
taskCompleted
public void taskCompleted()
Notifies the pool that at task was completed. Effectively increments the idle worker count.
-
shutdown
public void shutdown()
Shuts down the thread pool and all workers
-
-