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 TypeMethodDescriptionboolean
Submits a task for executionprotected ThreadGroup
getGroup()
Gets the associated thread groupgetNextTask
(org.sblim.cimclient.internal.util.ThreadPool.Worker worker) Get a new task.protected void
removeWorker
(org.sblim.cimclient.internal.util.ThreadPool.Worker worker) Removes a worker from the pool.void
shutdown()
Shuts down the thread pool and all workersvoid
Notifies the pool that at task was completed.void
Notifies 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:
true
if the task was executed or enqueued,false
otherwise.
-
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
-