org.quartz.simpl
Class SimpleThreadPool

java.lang.Object
  extended by org.quartz.simpl.SimpleThreadPool
All Implemented Interfaces:
ThreadPool

public class SimpleThreadPool
extends Object
implements ThreadPool

This is class is a simple implementation of a thread pool, based on the ThreadPool interface.

Runnable objects are sent to the pool with the runInThread(Runnable) method, which blocks until a Thread becomes available.

The pool has a fixed number of Threads, and does not grow or shrink based on demand.

Author:
James House, Juergen Donnerstag

Constructor Summary
SimpleThreadPool()
           Create a new (unconfigured) SimpleThreadPool.
SimpleThreadPool(int threadCount, int threadPriority)
           Create a new SimpleThreadPool with the specified number of Thread s that have the given priority.
 
Method Summary
 int blockForAvailableThreads()
           Determines the number of threads that are currently available in in the pool.
protected  void clearFromBusyWorkersList(org.quartz.simpl.SimpleThreadPool.WorkerThread wt)
           
protected  List<org.quartz.simpl.SimpleThreadPool.WorkerThread> createWorkerThreads(int createCount)
           
 org.slf4j.Logger getLog()
           
 int getPoolSize()
          Get the current number of threads in the ThreadPool.
 int getThreadCount()
           Get the number of worker threads in the pool.
 String getThreadNamePrefix()
           
 int getThreadPriority()
           Get the thread priority of worker threads in the pool.
 void initialize()
           Must be called before the ThreadPool is used, in order to give the it a chance to initialize.
 boolean isMakeThreadsDaemons()
           
 boolean isThreadsInheritContextClassLoaderOfInitializingThread()
           
 boolean isThreadsInheritGroupOfInitializingThread()
           
protected  void makeAvailable(org.quartz.simpl.SimpleThreadPool.WorkerThread wt)
           
 boolean runInThread(Runnable runnable)
           Run the given Runnable object in the next available Thread.
 void setInstanceId(String schedInstId)
          Inform the ThreadPool of the Scheduler instance's Id, prior to initialize being invoked.
 void setInstanceName(String schedName)
          Inform the ThreadPool of the Scheduler instance's name, prior to initialize being invoked.
 void setMakeThreadsDaemons(boolean makeThreadsDaemons)
           
 void setThreadCount(int count)
           Set the number of worker threads in the pool - has no effect after initialize() has been called.
 void setThreadNamePrefix(String prfx)
           
 void setThreadPriority(int prio)
           Set the thread priority of worker threads in the pool - has no effect after initialize() has been called.
 void setThreadsInheritContextClassLoaderOfInitializingThread(boolean inheritLoader)
           
 void setThreadsInheritGroupOfInitializingThread(boolean inheritGroup)
           
 void shutdown()
           Terminate any worker threads in this thread group.
 void shutdown(boolean waitForJobsToComplete)
           Terminate any worker threads in this thread group.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

SimpleThreadPool

public SimpleThreadPool()

Create a new (unconfigured) SimpleThreadPool.

See Also:
setThreadCount(int), setThreadPriority(int)

SimpleThreadPool

public SimpleThreadPool(int threadCount,
                        int threadPriority)

Create a new SimpleThreadPool with the specified number of Thread s that have the given priority.

Parameters:
threadCount - the number of worker Threads in the pool, must be > 0.
threadPriority - the thread priority for the worker threads.
See Also:
Thread
Method Detail

getLog

public org.slf4j.Logger getLog()

getPoolSize

public int getPoolSize()
Description copied from interface: ThreadPool

Get the current number of threads in the ThreadPool.

Specified by:
getPoolSize in interface ThreadPool

setThreadCount

public void setThreadCount(int count)

Set the number of worker threads in the pool - has no effect after initialize() has been called.


getThreadCount

public int getThreadCount()

Get the number of worker threads in the pool.


setThreadPriority

public void setThreadPriority(int prio)

Set the thread priority of worker threads in the pool - has no effect after initialize() has been called.


getThreadPriority

public int getThreadPriority()

Get the thread priority of worker threads in the pool.


setThreadNamePrefix

public void setThreadNamePrefix(String prfx)

getThreadNamePrefix

public String getThreadNamePrefix()

isThreadsInheritContextClassLoaderOfInitializingThread

public boolean isThreadsInheritContextClassLoaderOfInitializingThread()
Returns:
Returns the threadsInheritContextClassLoaderOfInitializingThread.

setThreadsInheritContextClassLoaderOfInitializingThread

public void setThreadsInheritContextClassLoaderOfInitializingThread(boolean inheritLoader)
Parameters:
inheritLoader - The threadsInheritContextClassLoaderOfInitializingThread to set.

isThreadsInheritGroupOfInitializingThread

public boolean isThreadsInheritGroupOfInitializingThread()

setThreadsInheritGroupOfInitializingThread

public void setThreadsInheritGroupOfInitializingThread(boolean inheritGroup)

isMakeThreadsDaemons

public boolean isMakeThreadsDaemons()
Returns:
Returns the value of makeThreadsDaemons.

setMakeThreadsDaemons

public void setMakeThreadsDaemons(boolean makeThreadsDaemons)
Parameters:
makeThreadsDaemons - The value of makeThreadsDaemons to set.

setInstanceId

public void setInstanceId(String schedInstId)
Description copied from interface: ThreadPool

Inform the ThreadPool of the Scheduler instance's Id, prior to initialize being invoked.

Specified by:
setInstanceId in interface ThreadPool

setInstanceName

public void setInstanceName(String schedName)
Description copied from interface: ThreadPool

Inform the ThreadPool of the Scheduler instance's name, prior to initialize being invoked.

Specified by:
setInstanceName in interface ThreadPool

initialize

public void initialize()
                throws SchedulerConfigException
Description copied from interface: ThreadPool

Must be called before the ThreadPool is used, in order to give the it a chance to initialize.

Typically called by the SchedulerFactory.

Specified by:
initialize in interface ThreadPool
Throws:
SchedulerConfigException

createWorkerThreads

protected List<org.quartz.simpl.SimpleThreadPool.WorkerThread> createWorkerThreads(int createCount)

shutdown

public void shutdown()

Terminate any worker threads in this thread group.

Jobs currently in progress will complete.


shutdown

public void shutdown(boolean waitForJobsToComplete)

Terminate any worker threads in this thread group.

Jobs currently in progress will complete.

Specified by:
shutdown in interface ThreadPool

runInThread

public boolean runInThread(Runnable runnable)

Run the given Runnable object in the next available Thread. If while waiting the thread pool is asked to shut down, the Runnable is executed immediately within a new additional thread.

Specified by:
runInThread in interface ThreadPool
Parameters:
runnable - the Runnable to be added.
Returns:
true, if the runnable was assigned to run on a Thread.

blockForAvailableThreads

public int blockForAvailableThreads()
Description copied from interface: ThreadPool

Determines the number of threads that are currently available in in the pool. Useful for determining the number of times runInThread(Runnable) can be called before returning false.

The implementation of this method should block until there is at least one available thread.

Specified by:
blockForAvailableThreads in interface ThreadPool
Returns:
the number of currently available threads

makeAvailable

protected void makeAvailable(org.quartz.simpl.SimpleThreadPool.WorkerThread wt)

clearFromBusyWorkersList

protected void clearFromBusyWorkersList(org.quartz.simpl.SimpleThreadPool.WorkerThread wt)


Copyright 2001-2013, Terracotta, Inc.