Class SimpleThreadPool

java.lang.Object
org.quartz.core.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(JobRunShell) 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 Details

  • Method Details

    • 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)
    • 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
    • shutdown

      public void shutdown()
      Terminate any worker threads in this thread group.

      Jobs currently in progress will complete.

      Specified by:
      shutdown in interface ThreadPool
    • runInThread

      public boolean runInThread(JobRunShell 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