此版本仍在开发中,尚未被视为稳定版本。对于最新的稳定版本,请使用 Spring Boot 3.3.4! |
此版本仍在开发中,尚未被视为稳定版本。对于最新的稳定版本,请使用 Spring Boot 3.3.4! |
如果上下文中没有 bean,Spring Boot 会自动配置一个 .
启用虚拟线程(使用 Java 21+ 并设置为 )后,这将是使用虚拟线程。
否则,它将是一个具有合理默认值的 a。
在任何一种情况下,自动配置的执行程序都将自动用于:Executor
AsyncTaskExecutor
spring.threads.virtual.enabled
true
SimpleAsyncTaskExecutor
ThreadPoolTaskExecutor
-
异步任务执行 (
@EnableAsync
) -
Spring for GraphQL 对控制器方法返回值的异步处理
Callable
-
Spring MVC 的异步请求处理
-
Spring WebFlux 的阻塞执行支持
如果您在上下文中定义了自定义,则常规任务执行(即)和 Spring for GraphQL 都将使用它。
但是,Spring MVC 和 Spring WebFlux 支持仅在它是一个实现(名为 )时才会使用它。
根据您的目标排列方式,您可以将 your 更改为 an 或同时定义 an 和 an 包装 custom 。 自动配置允许您轻松创建实例,这些实例可以重现自动配置默认执行的操作。 |
如果您在上下文中定义了自定义,则常规任务执行(即)和 Spring for GraphQL 都将使用它。
但是,Spring MVC 和 Spring WebFlux 支持仅在它是一个实现(名为 )时才会使用它。
根据您的目标排列方式,您可以将 your 更改为 an 或同时定义 an 和 an 包装 custom 。 自动配置允许您轻松创建实例,这些实例可以重现自动配置默认执行的操作。 |
当 a 被自动配置时,线程池使用 8 个核心线程,这些线程可以根据负载进行扩展和收缩。
可以使用命名空间对这些默认设置进行微调,如以下示例所示:ThreadPoolTaskExecutor
spring.task.execution
-
Properties
-
YAML
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 秒)时被回收。
如果需要将计划程序与计划任务执行相关联(例如使用),也可以自动配置计划程序。@EnableScheduling
如果启用了虚拟线程(使用 Java 21+ 并设置为 ),这将是使用虚拟线程。
这将忽略任何与池化相关的属性。spring.threads.virtual.enabled
true
SimpleAsyncTaskScheduler
SimpleAsyncTaskScheduler
如果未启用虚拟线程,它将是具有合理默认值的。
默认情况下,它使用一个线程,并且可以使用命名空间对其设置进行微调,如以下示例所示:ThreadPoolTaskScheduler
ThreadPoolTaskScheduler
spring.task.scheduling
-
Properties
-
YAML
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+ 并设置为 ),则它们会自动配置为使用虚拟线程。ThreadPoolTaskExecutorBuilder
SimpleAsyncTaskExecutorBuilder
ThreadPoolTaskSchedulerBuilder
SimpleAsyncTaskSchedulerBuilder
SimpleAsyncTaskExecutorBuilder
SimpleAsyncTaskSchedulerBuilder
spring.threads.virtual.enabled
true