Class ThreadPool
java.lang.Object
org.sblim.cimclient.internal.util.ThreadPool
Class ThreadPool implements a pool that manages threads and executes
submitted tasks using this threads.
-
Constructor Summary
ConstructorsConstructorDescriptionThreadPool(int pMinPoolSize, int pMaxPoolSize, int pToleratedBacklog, long pToleratedIdle, ThreadGroup pGroup, String pWorkerName) Ctor -
Method Summary
Modifier and TypeMethodDescriptionbooleanSubmits a task for executionprotected ThreadGroupgetGroup()Gets the associated thread groupgetNextTask(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 workersvoidNotifies the pool that at task was completed.voidNotifies the pool that at task was started.
-
Constructor Details
-
ThreadPool
public ThreadPool(int pMinPoolSize, int pMaxPoolSize, int pToleratedBacklog, long pToleratedIdle, ThreadGroup pGroup, 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 Details
-
execute
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
-
getNextTask
public Runnable getNextTask(org.sblim.cimclient.internal.util.ThreadPool.Worker worker) throws InterruptedException Get 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:
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
-