Spring的@Scheduled()注解有三种定时模式:cron表达式、fixedRate和fixedDelay。以下是具体介绍:
cron表达式
- 定义:cron表达式是一种强大的时间定义方式,允许开发者精确地指定任务执行的时间。它由6或7个字段组成,分别代表秒、分钟、小时、日期、月份、星期几(可选字段为年份)[^1^]。
- 应用场景:适用于需要按照复杂时间表执行的场景,如每天凌晨2点执行的任务,可以设置为
0 0 2 * * ?
[^2^]。
fixedRate
- 定义:fixedRate指定从上一次任务开始到下一次任务开始之间的间隔时间(单位为毫秒)。这意味着无论上一个任务是否完成,下一个任务都会在预定的时间开始[^1^]。
- 应用场景:适用于周期性执行的任务,且任务之间互不影响,例如每隔5秒执行一次的任务,可设置为
@Scheduled(fixedRate = 5000)
[^2^]。
fixedDelay
- 定义:fixedDelay指定从上一次任务结束到下一次任务开始之间的间隔时间(单位为毫秒)。这确保了只有在当前任务完成后,才会启动下一个任务[^1^]。
- 应用场景:适合需要确保任务顺序执行的场景,例如数据同步任务,每次任务结束后等待5秒再执行下一次,可设置为
@Scheduled(fixedDelay = 5000)
[^2^]。
总的来说,Spring的@Scheduled注解提供了灵活而强大的定时任务调度能力,通过合理选择和使用这些模式,可以有效地满足不同的业务需求。