Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## 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

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

Copyright 2001-2012, Terracotta, Inc.