SpringBoot学习笔记8-任务执行与调度

以spring官方文档为基础,官方地址:Spring Boot_Task Execution and Scheduling

  • 如果上下文没有Executor bean,那么 Spring Boot 会默认配置(带有默认值的)ThreadPoolTaskExecutor,它可以自动关联到异步任务执行(@EnableAsync)和Spring MVC异步请求处理。

  • 如果已经在上下文中定义了一个自定义Executor,常规任务执行(即@EnableAsync)将透明地使用它,但Spring MVC支持将不会被配置,因为它需要一个AsyncTaskExecutor实现(名为applicationTaskExecutor)。根据目标安排,可将Executor更改为ThreadPoolTaskExecutor或同时定义ThreadPoolTaskExecutor和AsyncConfigurer来包装自定义Executor。

自动配置的TaskExecutorBuilder允许创建实例,重现默认情况下自动配置的功能。

线程池使用8个核心线程,它们可以根据负载增长和收缩。这些默认设置可以使用spring.task. execute命名空间进行微调,如下所示:

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

上述配置会将线程池更改为使用有界队列,当队列满时(100个任务),线程池将增加到最大16个线程。当线程空闲10秒(而不是默认情况下的60秒)时,会回收线程,因此池的收缩会更激进。

ThreadPoolTaskScheduler也可以被自动配置,如果需要关联到计划任务执行(例如使用@ enablesscheduler)。线程池默认使用一个线程,它的设置可以使用spring.task.scheduling命名空间进行微调,如下所示:

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

如果需要创建自定义执行器或调度器,那么TaskExecutorBuilder bean和TaskSchedulerBuilder bean都可以在上下文中使用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值