Interface ThreadPool
-
- All Known Implementing Classes:
SimpleThreadPool
,ZeroSizeThreadPool
public interface ThreadPool
The interface to be implemented by classes that want to provide a thread pool for the
's use.QuartzScheduler
ThreadPool
implementation instances should ideally be made for the sole use of Quartz. Most importantly, when the methodblockForAvailableThreads()
returns a value of 1 or greater, there must still be at least one available thread in the pool when the methodrunInThread(Runnable)
is called a few moments (or many moments) later. If this assumption does not hold true, it may result in extra JobStore queries and updates, and if clustering features are being used, it may result in greater imballance of load.- Author:
- James House
- See Also:
QuartzScheduler
-
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description int
blockForAvailableThreads()
Determines the number of threads that are currently available in in the pool.int
getPoolSize()
Get the current number of threads in theThreadPool
.void
initialize()
Must be called before theThreadPool
is used, in order to give the it a chance to initialize.boolean
runInThread(java.lang.Runnable runnable)
Execute the given
in the next availableRunnable
Thread
.void
setInstanceId(java.lang.String schedInstId)
Inform theThreadPool
of the Scheduler instance's Id, prior to initialize being invoked.void
setInstanceName(java.lang.String schedName)
Inform theThreadPool
of the Scheduler instance's name, prior to initialize being invoked.void
shutdown(boolean waitForJobsToComplete)
Called by the QuartzScheduler to inform theThreadPool
that it should free up all of it's resources because the scheduler is shutting down.
-
-
-
Method Detail
-
runInThread
boolean runInThread(java.lang.Runnable runnable)
Execute the given
in the next availableRunnable
Thread
.The implementation of this interface should not throw exceptions unless there is a serious problem (i.e. a serious misconfiguration). If there are no immediately available threads
false
should be returned.- Returns:
- true, if the runnable was assigned to run on a Thread.
-
blockForAvailableThreads
int blockForAvailableThreads()
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.
- Returns:
- the number of currently available threads
-
initialize
void initialize() throws SchedulerConfigException
Must be called before the
ThreadPool
is used, in order to give the it a chance to initialize.Typically called by the
SchedulerFactory
.- Throws:
SchedulerConfigException
-
shutdown
void shutdown(boolean waitForJobsToComplete)
Called by the QuartzScheduler to inform the
ThreadPool
that it should free up all of it's resources because the scheduler is shutting down.
-
getPoolSize
int getPoolSize()
Get the current number of threads in the
ThreadPool
.
-
setInstanceId
void setInstanceId(java.lang.String schedInstId)
Inform the
ThreadPool
of the Scheduler instance's Id, prior to initialize being invoked.- Since:
- 1.7
-
setInstanceName
void setInstanceName(java.lang.String schedName)
Inform the
ThreadPool
of the Scheduler instance's name, prior to initialize being invoked.- Since:
- 1.7
-
-