此版本仍在开发中,尚未被视为稳定版本。对于最新的稳定版本,请使用 Spring Boot 3.3.1Spring中文文档

此版本仍在开发中,尚未被视为稳定版本。对于最新的稳定版本,请使用 Spring Boot 3.3.1Spring中文文档

在上下文中没有 bean 的情况下,Spring Boot 会自动配置 . 当启用虚拟线程(使用 Java 21+ 并设置为 )时,这将是使用虚拟线程。 否则,它将是一个具有合理默认值的。 无论哪种情况,自动配置的执行程序都将自动用于:ExecutorAsyncTaskExecutorspring.threads.virtual.enabledtrueSimpleAsyncTaskExecutorThreadPoolTaskExecutorSpring中文文档

如果您在上下文中定义了自定义,则常规任务执行(即 )和 Spring for GraphQL 都将使用它。 但是,Spring MVC 和 Spring WebFlux 支持仅在它是实现(名为 )时才会使用它。 根据您的目标排列,您可以将 更改为 或同时定义 an 和 包装您的自定义 。Executor@EnableAsyncAsyncTaskExecutorapplicationTaskExecutorExecutorAsyncTaskExecutorAsyncTaskExecutorAsyncConfigurerExecutorSpring中文文档

通过自动配置,您可以轻松创建实例,以重现默认情况下自动配置的功能。ThreadPoolTaskExecutorBuilderSpring中文文档

如果您在上下文中定义了自定义,则常规任务执行(即 )和 Spring for GraphQL 都将使用它。 但是,Spring MVC 和 Spring WebFlux 支持仅在它是实现(名为 )时才会使用它。 根据您的目标排列,您可以将 更改为 或同时定义 an 和 包装您的自定义 。Executor@EnableAsyncAsyncTaskExecutorapplicationTaskExecutorExecutorAsyncTaskExecutorAsyncTaskExecutorAsyncConfigurerExecutorSpring中文文档

通过自动配置,您可以轻松创建实例,以重现默认情况下自动配置的功能。ThreadPoolTaskExecutorBuilderSpring中文文档

自动配置时,线程池使用 8 个核心线程,这些线程可以根据负载进行增缩。 可以使用命名空间微调这些默认设置,如以下示例所示:ThreadPoolTaskExecutorspring.task.executionSpring中文文档

spring.task.execution.pool.max-size=16
spring.task.execution.pool.queue-capacity=100
spring.task.execution.pool.keep-alive=10s
spring:
  task:
    execution:
      pool:
        max-size: 16
        queue-capacity: 100
        keep-alive: "10s"

这会将线程池更改为使用有界队列,以便当队列已满(100 个任务)时,线程池将增加到最多 16 个线程。 池的收缩更具侵略性,因为线程在空闲 10 秒(而不是默认为 60 秒)时被回收。Spring中文文档

如果计划程序需要与计划任务执行相关联,也可以自动配置(例如,使用)。@EnableSchedulingSpring中文文档

如果启用了虚拟线程(使用 Java 21+ 并设置为 ),这将是使用虚拟线程的线程。 这将忽略任何与池相关的属性。spring.threads.virtual.enabledtrueSimpleAsyncTaskSchedulerSimpleAsyncTaskSchedulerSpring中文文档

如果未启用虚拟线程,则它将是具有合理默认值的虚拟线程。 默认情况下使用一个线程,可以使用命名空间微调其设置,如以下示例所示:ThreadPoolTaskSchedulerThreadPoolTaskSchedulerspring.task.schedulingSpring中文文档

spring.task.scheduling.thread-name-prefix=scheduling-
spring.task.scheduling.pool.size=2
spring:
  task:
    scheduling:
      thread-name-prefix: "scheduling-"
      pool:
        size: 2

如果需要创建自定义执行程序或调度程序,则在上下文中提供 Bean、bean、bean 和 a。 如果 和 bean 启用了虚拟线程(使用 Java 21+ 并设置为 ),则会自动配置为使用虚拟线程。ThreadPoolTaskExecutorBuilderSimpleAsyncTaskExecutorBuilderThreadPoolTaskSchedulerBuilderSimpleAsyncTaskSchedulerBuilderSimpleAsyncTaskExecutorBuilderSimpleAsyncTaskSchedulerBuilderspring.threads.virtual.enabledtrueSpring中文文档