@Scheduled 是 Spring Framework 中用于声明定时任务的注解。它支持多种属性来配置任务的执行时间,包括:
-
fixedRate: 表示两次任务开始执行的间隔时间,单位是毫秒。例如,fixedRate = 5000 表示任务每5秒执行一次。请注意,如果任务的执行时间超过了设定的间隔时间,那么下一次任务会等待当前任务完成后立即开始,不会等待完整的间隔时间。
-
fixedDelay: 表示两次任务执行结束之间的间隔时间,单位也是毫秒。例如,fixedDelay = 5000 表示任务每5秒执行一次,但这里的间隔是从上一次任务执行结束开始计算的。
-
cron: 使用 cron 表达式来定义任务的执行时间。cron 表达式由6或7个空格分隔的字段组成,分别表示秒、分、小时、日、月、周(可选的年份字段)。例如,cron = “0 * * * * ?” 表示任务每分钟执行一次。cron 表达式提供了非常灵活的任务调度方式。
-
initialDelay: 表示任务首次执行前的延迟时间,单位是毫秒。例如,initialDelay = 10000 表示任务在首次调度后的10秒开始执行。
以下是一些示例
@Scheduled(fixedRate = 5000)
public void fixedRateTask() {
// 每5秒执行一次
}
@Scheduled(fixedDelay = 5000)
public void fixedDelayTask() {
// 每次执行完后等待5秒再执行下一次
}
@Scheduled(cron = "0 * * * * ?")
public void cronTask() {
// 每分钟执行一次
}
@Scheduled(initialDelay = 10000, fixedRate = 5000)
public void initialDelayTask() {
// 首次执行延迟10秒,然后每5秒执行一次
}
定时任务使用网站:https://cron.ciding.cc/