Class TaskExecutorBuilder

java.lang.Object
org.springframework.boot.task.TaskExecutorBuilder

public class TaskExecutorBuilder extends Object
Builder that can be used to configure and create a TaskExecutor. Provides convenience methods to set common ThreadPoolTaskExecutor settings and register taskDecorator(TaskDecorator)). For advanced configuration, consider using TaskExecutorCustomizer.

In a typical auto-configured Spring Boot application this builder is available as a bean and can be injected whenever a TaskExecutor is needed.

Since:
2.1.0
Author:
Stephane Nicoll, Filip Hrisafov
  • Constructor Details

    • TaskExecutorBuilder

      public TaskExecutorBuilder()
  • Method Details

    • queueCapacity

      public TaskExecutorBuilder queueCapacity(int queueCapacity)
      Set the capacity of the queue. An unbounded capacity does not increase the pool and therefore ignores maxPoolSize.
      Parameters:
      queueCapacity - the queue capacity to set
      Returns:
      a new builder instance
    • corePoolSize

      public TaskExecutorBuilder corePoolSize(int corePoolSize)
      Set the core number of threads. Effectively that maximum number of threads as long as the queue is not full.

      Core threads can grow and shrink if allowCoreThreadTimeOut(boolean) is enabled.

      Parameters:
      corePoolSize - the core pool size to set
      Returns:
      a new builder instance
    • maxPoolSize

      public TaskExecutorBuilder maxPoolSize(int maxPoolSize)
      Set the maximum allowed number of threads. When the queue is full, the pool can expand up to that size to accommodate the load.

      If the queue capacity is unbounded, this setting is ignored.

      Parameters:
      maxPoolSize - the max pool size to set
      Returns:
      a new builder instance
    • allowCoreThreadTimeOut

      public TaskExecutorBuilder allowCoreThreadTimeOut(boolean allowCoreThreadTimeOut)
      Set whether core threads are allowed to time out. When enabled, this enables dynamic growing and shrinking of the pool.
      Parameters:
      allowCoreThreadTimeOut - if core threads are allowed to time out
      Returns:
      a new builder instance
    • keepAlive

      public TaskExecutorBuilder keepAlive(Duration keepAlive)
      Set the time limit for which threads may remain idle before being terminated.
      Parameters:
      keepAlive - the keep alive to set
      Returns:
      a new builder instance
    • awaitTermination

      public TaskExecutorBuilder awaitTermination(boolean awaitTermination)
      Set whether the executor should wait for scheduled tasks to complete on shutdown, not interrupting running tasks and executing all tasks in the queue.
      Parameters:
      awaitTermination - whether the executor needs to wait for the tasks to complete on shutdown
      Returns:
      a new builder instance
      See Also:
    • awaitTerminationPeriod

      public TaskExecutorBuilder awaitTerminationPeriod(Duration awaitTerminationPeriod)
      Set the maximum time the executor is supposed to block on shutdown. When set, the executor blocks on shutdown in order to wait for remaining tasks to complete their execution before the rest of the container continues to shut down. This is particularly useful if your remaining tasks are likely to need access to other resources that are also managed by the container.
      Parameters:
      awaitTerminationPeriod - the await termination period to set
      Returns:
      a new builder instance
    • threadNamePrefix

      public TaskExecutorBuilder threadNamePrefix(String threadNamePrefix)
      Set the prefix to use for the names of newly created threads.
      Parameters:
      threadNamePrefix - the thread name prefix to set
      Returns:
      a new builder instance
    • taskDecorator

      public TaskExecutorBuilder taskDecorator(TaskDecorator taskDecorator)
      Set the TaskDecorator to use or null to not use any.
      Parameters:
      taskDecorator - the task decorator to use
      Returns:
      a new builder instance
    • customizers

      public TaskExecutorBuilder customizers(TaskExecutorCustomizer... customizers)
      Set the TaskExecutorCustomizers that should be applied to the ThreadPoolTaskExecutor. Customizers are applied in the order that they were added after builder configuration has been applied. Setting this value will replace any previously configured customizers.
      Parameters:
      customizers - the customizers to set
      Returns:
      a new builder instance
      See Also:
    • customizers

      public TaskExecutorBuilder customizers(Iterable<TaskExecutorCustomizer> customizers)
      Set the TaskExecutorCustomizers that should be applied to the ThreadPoolTaskExecutor. Customizers are applied in the order that they were added after builder configuration has been applied. Setting this value will replace any previously configured customizers.
      Parameters:
      customizers - the customizers to set
      Returns:
      a new builder instance
      See Also:
    • additionalCustomizers

      public TaskExecutorBuilder additionalCustomizers(TaskExecutorCustomizer... customizers)
      Add TaskExecutorCustomizers that should be applied to the ThreadPoolTaskExecutor. Customizers are applied in the order that they were added after builder configuration has been applied.
      Parameters:
      customizers - the customizers to add
      Returns:
      a new builder instance
      See Also:
    • additionalCustomizers

      public TaskExecutorBuilder additionalCustomizers(Iterable<TaskExecutorCustomizer> customizers)
      Add TaskExecutorCustomizers that should be applied to the ThreadPoolTaskExecutor. Customizers are applied in the order that they were added after builder configuration has been applied.
      Parameters:
      customizers - the customizers to add
      Returns:
      a new builder instance
      See Also:
    • build

      public ThreadPoolTaskExecutor build()
      Build a new ThreadPoolTaskExecutor instance and configure it using this builder.
      Returns:
      a configured ThreadPoolTaskExecutor instance.
      See Also:
    • build

      public <T extends ThreadPoolTaskExecutor> T build(Class<T> taskExecutorClass)
      Build a new ThreadPoolTaskExecutor instance of the specified type and configure it using this builder.
      Type Parameters:
      T - the type of task executor
      Parameters:
      taskExecutorClass - the template type to create
      Returns:
      a configured ThreadPoolTaskExecutor instance.
      See Also:
    • configure

      public <T extends ThreadPoolTaskExecutor> T configure(T taskExecutor)
      Configure the provided ThreadPoolTaskExecutor instance using this builder.
      Type Parameters:
      T - the type of task executor
      Parameters:
      taskExecutor - the ThreadPoolTaskExecutor to configure
      Returns:
      the task executor instance
      See Also: