Package org.sblim.wbem.util
Class ThreadPool
- java.lang.Object
-
- org.sblim.wbem.util.ThreadPool
-
public class ThreadPool extends java.lang.Object
Class ThreadPool implements a pool that manages threads and executes submitted tasks using this threads.
-
-
Constructor Summary
Constructors Constructor Description ThreadPool(int pMinPoolSize, int pMaxPoolSize, java.lang.ThreadGroup pGroup, java.lang.String pWorkerName)
Ctor
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
execute(java.lang.Runnable task)
boolean
execute(java.lang.Runnable task, boolean enqueue)
Submits a task for executionprotected java.lang.ThreadGroup
getGroup()
Gets the associated thread grouplong
getIdleTimeOutMs()
Returns the idle timeoutprotected void
removeThread(org.sblim.wbem.util.ThreadPool.Worker worker)
Removes a worker from the pool.void
shutdown()
Shuts down the thread pool and all workersboolean
taskCompleted(org.sblim.wbem.util.ThreadPool.Worker worker, boolean timedOut)
Used by the worker to report task completion and ask for a new task
-
-
-
Constructor Detail
-
ThreadPool
public ThreadPool(int pMinPoolSize, int pMaxPoolSize, 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.pGroup
- Then thread group to put the worker threads inpWorkerName
- The name to use for worker threads
-
-
Method Detail
-
getIdleTimeOutMs
public long getIdleTimeOutMs()
Returns the idle timeout- Returns:
- The timeout
-
execute
public boolean execute(java.lang.Runnable task)
-
execute
public boolean execute(java.lang.Runnable task, boolean enqueue)
Submits a task for execution- Parameters:
task
- The taskenqueue
- iftrue
the task will be enqueued if no worker is free, otherwise the task is executed immediately or not at all.- Returns:
true
if the task was executed or enqueued,false
otherwise.
-
getGroup
protected java.lang.ThreadGroup getGroup()
Gets the associated thread group- Returns:
- The thread group
-
taskCompleted
public boolean taskCompleted(org.sblim.wbem.util.ThreadPool.Worker worker, boolean timedOut)
Used by the worker to report task completion and ask for a new task- Parameters:
worker
- The workertimedOut
-true
if the worker has been idle and reached timeout- Returns:
true
if the worker shall stay alive,false
if it shall shut down itself
-
removeThread
protected void removeThread(org.sblim.wbem.util.ThreadPool.Worker worker)
Removes a worker from the pool.- Parameters:
worker
- The worker
-
shutdown
public void shutdown()
Shuts down the thread pool and all workers
-
-