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

      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 the ThreadPool.
      void initialize()
      Must be called before the ThreadPool is used, in order to give the it a chance to initialize.
      boolean runInThread​(java.lang.Runnable runnable)
      Execute the given Runnable in the next available Thread.
      void setInstanceId​(java.lang.String schedInstId)
      Inform the ThreadPool of the Scheduler instance's Id, prior to initialize being invoked.
      void setInstanceName​(java.lang.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​(java.lang.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
      • 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