Class ThreadPoolTaskExecutorBuilder

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

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

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

Since:
3.2.0
  • Constructor Details

    • ThreadPoolTaskExecutorBuilder

      public ThreadPoolTaskExecutorBuilder()
  • Method Details

    • queueCapacity

      public ThreadPoolTaskExecutorBuilder 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 ThreadPoolTaskExecutorBuilder 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 ThreadPoolTaskExecutorBuilder 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 ThreadPoolTaskExecutorBuilder 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 ThreadPoolTaskExecutorBuilder 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
    • acceptTasksAfterContextClose

      public ThreadPoolTaskExecutorBuilder acceptTasksAfterContextClose(boolean acceptTasksAfterContextClose)
      Set whether to accept further tasks after the application context close phase has begun.
      Parameters:
      acceptTasksAfterContextClose - whether to accept further tasks after the application context close phase has begun
      Returns:
      a new builder instance
      Since:
      3.3.0
    • awaitTermination

      public ThreadPoolTaskExecutorBuilder 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 ThreadPoolTaskExecutorBuilder 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 ThreadPoolTaskExecutorBuilder 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 ThreadPoolTaskExecutorBuilder taskDecorator(org.springframework.core.task.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

      Set the ThreadPoolTaskExecutorCustomizers 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 ThreadPoolTaskExecutorBuilder customizers(Iterable<? extends ThreadPoolTaskExecutorCustomizer> customizers)
      Set the ThreadPoolTaskExecutorCustomizers 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 ThreadPoolTaskExecutorBuilder additionalCustomizers(ThreadPoolTaskExecutorCustomizer... customizers)
      Add ThreadPoolTaskExecutorCustomizers 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 ThreadPoolTaskExecutorBuilder additionalCustomizers(Iterable<? extends ThreadPoolTaskExecutorCustomizer> customizers)
      Add ThreadPoolTaskExecutorCustomizers 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 org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor build()
      Build a new ThreadPoolTaskExecutor instance and configure it using this builder.
      Returns:
      a configured ThreadPoolTaskExecutor instance.
      See Also:
    • build

      public <T extends org.springframework.scheduling.concurrent.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 org.springframework.scheduling.concurrent.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: