Spring---定时任务@Schedule的使用,及其参数使用yml或properties配置值

54 篇文章 1 订阅

1. 使用

1. 在spring 的启动类上添加 允许定时任务注解
@EnableScheduling
2. 在要定时执行的方法上添加注解:
@Scheduled(fixedRate = 5000) // 任务每隔 5 秒执行一次@Scheduled(fixDelay= 5000)	// 任务每隔 5 秒执行一次(上一次任务结束5秒后, 再执行下一次任务)

或者可以使用 cron 表达式来完成更复杂的定时要求.

2. 使用yml或properties配置值来控制任务执行的间隔时间

可以使用此方法传递配置值:

 @Scheduled(fixedDelayString = "${test.delay}")

其中 test.delay为yml或properties配置值中的自定义配置值

3. @Schedule参数 fixedRate 与 fixedDelay 的区别

简单来说: fixedRate 任务两次执行时间间隔是任务的开始点,而 fixedDelay 的间隔是前次任务的结束与下次任务的开始。
1. 对于 fixRate , 当任务时长超过 fixedRate 时,会在上次任务执行完后立即启动下一轮。除非这个 Job 方法用 @Async 注解了,使得任务不在 TaskScheduler 线程池中执行,而是每次创建新线程来执行。
2. 对于 fixDelay , 其总是前一次任务完成后,延时固定长度然后执行一次任务

2. 其他

如果要持续执行一个耗时操作的定时任务, 那么推荐使用 fixDelay=1 , 让每个定时任务之间的结束和开始间隔 1ms

如果使用 fixRate=1, 那么这个任务的耗时操作会导致后面的任务会一直被阻塞, 当任务阻塞过多时, 可能会出现不可预见的操作, 所以使用fixDelay=1, 这样对性能的影响比较小, 且比较稳妥

参考:
理解Spring定时任务的fixedRate和fixedDelay

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值