Si no hay ningún bean Executor en el contexto, Spring Boot configura automáticamente el ThreadPoolTaskExecutor con valores predeterminados adecuados que pueden asociarse automáticamente con la ejecución de tareas asincrónicas (el anotación @EnableAsync) y procesamiento de solicitudes asincrónicas en Spring MVC.

Si define un Executor personalizado en el contexto, durante la ejecución normal de la tarea (es decir, con la anotación @EnableAsync) se usará de forma transparente, pero Spring MVC el soporte no se configurará porque requiere una implementación AsyncTaskExecutor (llamada applicationTaskExecutor). Dependiendo de su organización de destino, puede cambiar Executor a ThreadPoolTaskExecutor, o definir tanto ThreadPoolTaskExecutor como AsyncConfigurer envolviendo su personalizado Executor.

La configuración automática TaskExecutorBuilder le permite crear fácilmente instancias que replican lo que hace la configuración automática de forma predeterminada.

El grupo de subprocesos utiliza 8 subprocesos principales, cuyo número puede aumentar o disminuir según la carga. Estas configuraciones predeterminadas se pueden ajustar usando el espacio de nombres spring.task.execution, como se muestra en el siguiente ejemplo:

Propiedades
spring.task.execution.pool.max-size=16
spring.task.execution.pool.queue-capacidad=100
spring.task.execution.pool.keep-alive=10s
Yaml
primavera:
  tarea:
    ejecución:
      piscina:
        tamaño máximo: 16
        capacidad de cola: 100
        mantener vivo: "10s"

Este código modifica el grupo de subprocesos para utilizar una cola con un límite de longitud, de modo que si la cola se llena (100 tareas), el grupo de subprocesos aumenta a un máximo de 16 subprocesos. La poda del grupo es más agresiva porque los subprocesos se restauran si están inactivos durante 10 segundos (en lugar de los 60 segundos predeterminados).

El Programador ThreadPoolTaskScheduler también se puede configurar automáticamente si necesita asociarse con la ejecución de tareas programadas (por ejemplo, usando la anotación @EnableScheduling). El grupo de subprocesos predeterminado utiliza un único subproceso, pero su configuración se puede ajustar utilizando el espacio de nombres spring.task.scheduling, como se muestra en el siguiente ejemplo:

Propiedades
spring.task.scheduling.thread-name-prefix=programación-
spring.task.scheduling.pool.size=2
Yaml
primavera:
  tarea:
    Planificación:
      prefijo-nombre-del-proceso: "programación-"
      piscina:
        tamaño: 2

Los beans TaskExecutorBuilder y TaskSchedulerBuilder están disponibles en el contexto si necesita crear un ejecutor o programador personalizado.