org.springframework.scheduling.quartz

## Class SimpleThreadPoolTaskExecutor

- java.lang.Object
- - org.quartz.simpl.SimpleThreadPool
  - - org.springframework.scheduling.quartz.SimpleThreadPoolTaskExecutor

- All Implemented Interfaces:
    Executor, org.quartz.spi.ThreadPool, DisposableBean, InitializingBean, AsyncListenableTaskExecutor, AsyncTaskExecutor, TaskExecutor, SchedulingTaskExecutor

      public class SimpleThreadPoolTaskExecutor
      extends org.quartz.simpl.SimpleThreadPool
      implements AsyncListenableTaskExecutor, SchedulingTaskExecutor, InitializingBean, DisposableBean

  Subclass of Quartz's SimpleThreadPool that implements Spring's `TaskExecutor` interface and listens to Spring lifecycle callbacks.

  Can be shared between a Quartz Scheduler (specified as "taskExecutor") and other TaskExecutor users, or even used completely independent of a Quartz Scheduler (as plain TaskExecutor backend).

  Since:
    2.0
  Author:
    Juergen Hoeller
  See Also:
    `SimpleThreadPool`, `TaskExecutor`, `SchedulerFactoryBean.setTaskExecutor(java.util.concurrent.Executor)`

- - ### Field Summary

    - ### Fields inherited from interface org.springframework.core.task.AsyncTaskExecutor

      `TIMEOUT_IMMEDIATE, TIMEOUT_INDEFINITE`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `SimpleThreadPoolTaskExecutor()`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods Deprecated Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `afterPropertiesSet()` Invoked by the containing `BeanFactory` after it has set all bean properties and satisfied `BeanFactoryAware`, `ApplicationContextAware` etc.
    `void` | `destroy()` Invoked by the containing `BeanFactory` on destruction of a bean.
    `void` | `execute(Runnable task)` Execute the given `task`.
    `void` | `execute(Runnable task, long startTimeout)` Deprecated.
    `void` | `setWaitForJobsToCompleteOnShutdown(boolean waitForJobsToCompleteOnShutdown)` Set whether to wait for running jobs to complete on shutdown.
    `<T> Future<T>` | `submit(Callable<T> task)` Submit a Callable task for execution, receiving a Future representing that task.
    `Future<?>` | `submit(Runnable task)` Submit a Runnable task for execution, receiving a Future representing that task.
    `<T> ListenableFuture<T>` | `submitListenable(Callable<T> task)` Submit a `Callable` task for execution, receiving a `ListenableFuture` representing that task.
    `ListenableFuture<?>` | `submitListenable(Runnable task)` Submit a `Runnable` task for execution, receiving a `ListenableFuture` representing that task.

    - ### Methods inherited from class org.quartz.simpl.SimpleThreadPool

      `blockForAvailableThreads, clearFromBusyWorkersList, createWorkerThreads, getLog, getPoolSize, getThreadCount, getThreadNamePrefix, getThreadPriority, initialize, isMakeThreadsDaemons, isThreadsInheritContextClassLoaderOfInitializingThread, isThreadsInheritGroupOfInitializingThread, makeAvailable, runInThread, setInstanceId, setInstanceName, setMakeThreadsDaemons, setThreadCount, setThreadNamePrefix, setThreadPriority, setThreadsInheritContextClassLoaderOfInitializingThread, setThreadsInheritGroupOfInitializingThread, shutdown, shutdown`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

    - ### Methods inherited from interface org.springframework.scheduling.SchedulingTaskExecutor

      `prefersShortLivedTasks`

- - ### Constructor Detail

    - #### SimpleThreadPoolTaskExecutor

          public SimpleThreadPoolTaskExecutor()

  - ### Method Detail

    - #### setWaitForJobsToCompleteOnShutdown

          public void setWaitForJobsToCompleteOnShutdown(boolean waitForJobsToCompleteOnShutdown)

      Set whether to wait for running jobs to complete on shutdown. Default is "false".
      See Also:
        `SimpleThreadPool.shutdown(boolean)`

    - #### afterPropertiesSet

          public void afterPropertiesSet()
                                  throws org.quartz.SchedulerConfigException

      Description copied from interface: `InitializingBean`
      Invoked by the containing `BeanFactory` after it has set all bean properties and satisfied `BeanFactoryAware`, `ApplicationContextAware` etc.

      This method allows the bean instance to perform validation of its overall configuration and final initialization when all bean properties have been set.

      Specified by:
        `afterPropertiesSet` in interface `InitializingBean`
      Throws:
        `org.quartz.SchedulerConfigException`

    - #### execute

          public void execute(Runnable task)

      Description copied from interface: `TaskExecutor`
      Execute the given `task`.

      The call might return immediately if the implementation uses an asynchronous execution strategy, or might block in the case of synchronous execution.

      Specified by:
        `execute` in interface `Executor`
      Specified by:
        `execute` in interface `TaskExecutor`
      Parameters:
        `task` - the `Runnable` to execute (never `null`)

    - #### execute

          @Deprecated
          public void execute(Runnable task,
                                          long startTimeout)

      Deprecated.
      Description copied from interface: `AsyncTaskExecutor`
      Execute the given `task`.
      Specified by:
        `execute` in interface `AsyncTaskExecutor`
      Parameters:
        `task` - the `Runnable` to execute (never `null`)
        `startTimeout` - the time duration (milliseconds) within which the task is supposed to start. This is intended as a hint to the executor, allowing for preferred handling of immediate tasks. Typical values are `AsyncTaskExecutor.TIMEOUT_IMMEDIATE` or `AsyncTaskExecutor.TIMEOUT_INDEFINITE` (the default as used by `TaskExecutor.execute(Runnable)`).
      See Also:
        `TaskExecutor.execute(Runnable)`

    - #### submit

          public Future<?> submit(Runnable task)

      Description copied from interface: `AsyncTaskExecutor`
      Submit a Runnable task for execution, receiving a Future representing that task. The Future will return a `null` result upon completion.
      Specified by:
        `submit` in interface `AsyncTaskExecutor`
      Parameters:
        `task` - the `Runnable` to execute (never `null`)
      Returns:
        a Future representing pending completion of the task

    - #### submit

          public <T> Future<T> submit(Callable<T> task)

      Description copied from interface: `AsyncTaskExecutor`
      Submit a Callable task for execution, receiving a Future representing that task. The Future will return the Callable's result upon completion.
      Specified by:
        `submit` in interface `AsyncTaskExecutor`
      Parameters:
        `task` - the `Callable` to execute (never `null`)
      Returns:
        a Future representing pending completion of the task

    - #### submitListenable

          public ListenableFuture<?> submitListenable(Runnable task)

      Description copied from interface: `AsyncListenableTaskExecutor`
      Submit a `Runnable` task for execution, receiving a `ListenableFuture` representing that task. The Future will return a `null` result upon completion.
      Specified by:
        `submitListenable` in interface `AsyncListenableTaskExecutor`
      Parameters:
        `task` - the `Runnable` to execute (never `null`)
      Returns:
        a `ListenableFuture` representing pending completion of the task

    - #### submitListenable

          public <T> ListenableFuture<T> submitListenable(Callable<T> task)

      Description copied from interface: `AsyncListenableTaskExecutor`
      Submit a `Callable` task for execution, receiving a `ListenableFuture` representing that task. The Future will return the Callable's result upon completion.
      Specified by:
        `submitListenable` in interface `AsyncListenableTaskExecutor`
      Parameters:
        `task` - the `Callable` to execute (never `null`)
      Returns:
        a `ListenableFuture` representing pending completion of the task

    - #### destroy

          public void destroy()

      Description copied from interface: `DisposableBean`
      Invoked by the containing `BeanFactory` on destruction of a bean.
      Specified by:
        `destroy` in interface `DisposableBean`