Spring Boot 定时任务
Spring Boot 定时任务
@EnableScheduling
首先在 SpringBoot 启动类加上 @EnableScheduling
启用定时任务。
创建 scheduled task
使用 @Scheduled
注解就能很方便地创建一个定时任务,下面的代码中涵盖了 @Scheduled
的常见用法,包括:固定速率执行、固定延迟执行、初始延迟执行、使用 Cron 表达式执行定时任务。
注意 fixedRate
模式有个小坑,假如有这样一种情况:某个方法的定时器设定的固定速率是每 5 秒执行一次。这个方法现在要执行下面四个任务,四个任务的耗时是:6 s、6s、2s、3s,请问这些任务默认情况下(单线程)将如何被执行?程序验证:
运行程序输出如下:
示意图:
自定义线程池
默认情况下,@Scheduled
任务都在 Spring 创建的大小为 1 的默认线程池中执行,你可以通过在加了 @Scheduled
注解的方法里加上下面这段代码来验证。
每次运行都会输出:
如果需要自定义线程池执行话只需要新加一个实现 SchedulingConfigurer
接口的 configureTasks
的类即可,这个类需要加上 @Configuration
注解。
并发执行
测试代码:
reportCurrentTimeWithFixedDelay()
方法会每 5 秒执行一次,执行代码输出如下:
添加 @EnableAsync
和 @Async
这两个注解让任务并行执行:
reportCurrentTimeWithFixedDelay()
方法上加上 @Async
注解后会每 2 秒执行一次,执行代码输出如下:
金点网络-全网资源,一网打尽 » Spring Boot 定时任务
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。
- 是否提供免费更新服务?
- 持续更新,永久免费
- 是否经过安全检测?
- 安全无毒,放心食用