org.quartz.spi
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 QuartzScheduler's use.

ThreadPool implementation instances should ideally be made for the sole use of Quartz. Most importantly, when the method blockForAvailableThreads() returns a value of 1 or greater, there must still be at least one available thread in the pool when the method runInThread(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
 int blockForAvailableThreads()
           Determines the number of threads that are currently available in in the pool.
 int getPoolSize()
          Get the current number of threads in the ThreadPool.
 void initialize()
           Must be called before the ThreadPool is used, in order to give the it a chance to initialize.
 boolean runInThread(Runnable runnable)
           Execute the given Runnable 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 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.
 

Method Detail

runInThread

boolean runInThread(Runnable runnable)

Execute the given Runnable in the next available 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(String schedInstId)

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

Since:
1.7

setInstanceName

void setInstanceName(String schedName)

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

Since:
1.7


Copyright 2001-2015, Terracotta, Inc.