## org.springframework.scheduling.concurrent
Class ExecutorConfigurationSupport

    java.lang.Object
      org.springframework.util.CustomizableThreadCreator
          org.springframework.scheduling.concurrent.CustomizableThreadFactory
              org.springframework.scheduling.concurrent.ExecutorConfigurationSupport

All Implemented Interfaces:
  Serializable, ThreadFactory, BeanNameAware, DisposableBean, InitializingBean

Direct Known Subclasses:
  ScheduledExecutorFactoryBean, ThreadPoolExecutorFactoryBean, ThreadPoolTaskExecutor, ThreadPoolTaskScheduler

    public abstract class ExecutorConfigurationSupport

extends CustomizableThreadFactory
implements BeanNameAware, InitializingBean, DisposableBean

Base class for classes that are setting up a `java.util.concurrent.ExecutorService` (typically a `ThreadPoolExecutor`). Defines common configuration settings and common lifecycle handling.

Since:
  3.0
Author:
  Juergen Hoeller
See Also:
  `ExecutorService`, `Executors`, `ThreadPoolExecutor`, Serialized Form

Field Summary
`protected Log` `logger`

Constructor Summary
`ExecutorConfigurationSupport()`

Method Summary
`void` `afterPropertiesSet()` Calls `initialize()` after the container applied all property values.
`void` `destroy()` Calls `shutdown` when the BeanFactory destroys the task executor instance.
`void` `initialize()` Set up the ExecutorService.
`protected abstract ExecutorService` `initializeExecutor(ThreadFactory threadFactory, RejectedExecutionHandler rejectedExecutionHandler)` Create the target `ExecutorService` instance.
`void` `setBeanName(String name)` Set the name of the bean in the bean factory that created this bean.
`void` `setRejectedExecutionHandler(RejectedExecutionHandler rejectedExecutionHandler)` Set the RejectedExecutionHandler to use for the ThreadPoolExecutor.
`void` `setThreadFactory(ThreadFactory threadFactory)` Set the ThreadFactory to use for the ThreadPoolExecutor's thread pool.
`void` `setThreadNamePrefix(String threadNamePrefix)` Specify the prefix to use for the names of newly created threads.
`void` `setWaitForTasksToCompleteOnShutdown(boolean waitForJobsToCompleteOnShutdown)` Set whether to wait for scheduled tasks to complete on shutdown.
`void` `shutdown()` Perform a shutdown on the ThreadPoolExecutor.

Methods inherited from class org.springframework.scheduling.concurrent.CustomizableThreadFactory
`newThread`

Methods inherited from class org.springframework.util.CustomizableThreadCreator
`createThread, getDefaultThreadNamePrefix, getThreadGroup, getThreadNamePrefix, getThreadPriority, isDaemon, nextThreadName, setDaemon, setThreadGroup, setThreadGroupName, setThreadPriority`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### logger

    protected final Log logger

Constructor Detail

### ExecutorConfigurationSupport

    public ExecutorConfigurationSupport()

Method Detail

### setThreadFactory

    public void setThreadFactory(ThreadFactory threadFactory)

  Set the ThreadFactory to use for the ThreadPoolExecutor's thread pool. Default is the ThreadPoolExecutor's default thread factory.

  See Also:
    `Executors.defaultThreadFactory()`

### setThreadNamePrefix

    public void setThreadNamePrefix(String threadNamePrefix)

  Description copied from class: `CustomizableThreadCreator`
  Specify the prefix to use for the names of newly created threads. Default is "SimpleAsyncTaskExecutor-".

  Overrides:
    `setThreadNamePrefix` in class `CustomizableThreadCreator`

### setRejectedExecutionHandler

    public void setRejectedExecutionHandler(RejectedExecutionHandler rejectedExecutionHandler)

  Set the RejectedExecutionHandler to use for the ThreadPoolExecutor. Default is the ThreadPoolExecutor's default abort policy.

  See Also:
    `ThreadPoolExecutor.AbortPolicy`

### setWaitForTasksToCompleteOnShutdown

    public void setWaitForTasksToCompleteOnShutdown(boolean waitForJobsToCompleteOnShutdown)

  Set whether to wait for scheduled tasks to complete on shutdown.

  Default is "false". Switch this to "true" if you prefer fully completed tasks at the expense of a longer shutdown phase.

  See Also:
    `ExecutorService.shutdown()`, `ExecutorService.shutdownNow()`

### setBeanName

    public void setBeanName(String name)

  Description copied from interface: `BeanNameAware`
  Set the name of the bean in the bean factory that created this bean.

  Invoked after population of normal bean properties but before an init callback such as `InitializingBean.afterPropertiesSet()` or a custom init-method.

  Specified by:
    `setBeanName` in interface `BeanNameAware`
  Parameters:
    `name` - the name of the bean in the factory. Note that this name is the actual bean name used in the factory, which may differ from the originally specified name: in particular for inner bean names, the actual bean name might have been made unique through appending "#..." suffixes. Use the `BeanFactoryUtils.originalBeanName(String)` method to extract the original bean name (without suffix), if desired.

### afterPropertiesSet

    public void afterPropertiesSet()

  Calls `initialize()` after the container applied all property values.

  Specified by:
    `afterPropertiesSet` in interface `InitializingBean`
  See Also:
    `initialize()`

### initialize

    public void initialize()

  Set up the ExecutorService.

### initializeExecutor

    protected abstract ExecutorService initializeExecutor(ThreadFactory threadFactory,
                                                          RejectedExecutionHandler rejectedExecutionHandler)

  Create the target `ExecutorService` instance. Called by `afterPropertiesSet`.

  Parameters:
    `threadFactory` - the ThreadFactory to use
    `rejectedExecutionHandler` - the RejectedExecutionHandler to use
  Returns:
    a new ExecutorService instance
  See Also:
    `afterPropertiesSet()`

### destroy

    public void destroy()

  Calls `shutdown` when the BeanFactory destroys the task executor instance.

  Specified by:
    `destroy` in interface `DisposableBean`
  See Also:
    `shutdown()`

### shutdown

    public void shutdown()

  Perform a shutdown on the ThreadPoolExecutor.

  See Also:
    `ExecutorService.shutdown()`