Spring下开启定时任务@Scheduled
Scheduled注解
@Scheduled注解是spring boot提供的用于定时任务控制的注解,主要用于控制任务在某个指定时间执行,或者每隔一段时间执行。注意需要配合@EnableScheduling使用,配置@Scheduled主要有三种配置执行时间的方式:cron、fixedRate、fixedDelay。
cron
cron表达式指定执行时间
cron表达式测试网址:https://tooltt.com/crontab/c/34.html
如:
1 | /** 每天凌晨1点定时执行 */ |
fixedRate
上一次开始执行时间点之后多长时间再执行,执行的间隔时间是固定的。
打个比方,如果一个任务本来只需要花2秒就能执行完成,而我们设置了fixedRate为5秒,那么无论任务实际执行时间多快,它都将在开始执行后的5秒钟后再次执行。
这意味着,如果任务的实际执行时间超过了设置的间隔时长,下一次任务的执行也会立即开始。这会导致执行的冲突,可能发生数据混乱。
1 | // 上一次开始执行时间点 之后5秒 再执行 |
fixedDelay
fixedDelay的间隔时间是从上一次任务结束到下一次任务开始的时间。
例如,如果一个方法上设置了fixedDelay为5秒,并且该方法某一次执行结束后花了7秒,那么从这一次任务结束到下一次任务开始将只计算5秒钟。
这种方式确保了任务之间的延迟是固定的,不受到任务执行时间长短的影响。
1 | // 上一次执行结束时间点 之后5秒 再执行 |