admin 管理员组文章数量: 887006
@Scheduled(cron = ““)cron参数的用法,场景示例
@Scheduled注解用于指定定时任务的执行策略,其中最常用的参数是cron。cron表达式是一个字符串,用于指定定时任务的执行时间,格式如下:
秒 分 时 日 月 周 年(可选)
各个参数的意义如下:
秒(0-59)
分(0-59)
时(0-23)
日(1-31)
月(1-12或JAN-DEC)
周(1-7或SUN-SAT)
年(可选,1970-2099)
cron表达式中可以使用的特殊字符包括:
星号(*):代表所有可能的值
逗号(,):用于分隔多个值
中划线(-):用于指定一个范围内的值
斜杠(/):用于指定一个值的步长
下面是一些常见的cron表达式示例:
每天的凌晨1点执行一次任务:
0 0 1 * * ?
每分钟执行一次任务:
0 * * * * ?
每天的凌晨1点到2点之间每隔5分钟执行一次任务:
0 0/5 1-2 * * ?
每月的第一天凌晨1点执行一次任务:
0 0 1 1 * ?
每周五中午12点和下午6点各执行一次任务:
0 0 12,18 ? * FRI
每年的1月1日凌晨1点执行一次任务:
0 0 1 1 1 ?
需要注意的是,cron表达式中的时间是按照服务器所在时区来计算的,因此在设置时需要注意时区的差异。
以下是更为详细的介绍:
@Scheduled(cron = “秒 分 时 日 月 周 年”)
各个参数的含义如下:
参数 含义 范围
秒 秒数 0-59
分 分钟数 0-59
时 小时数 0-23
日 日期 1-31
月 月份 1-12
周 星期几 0-7(0和7都表示周日)
年 年份 可选
其中,年是可选的,如果不设置则表示每一年都执行。
常用的cron表达式示例: 0 0 0 * * *:每天凌晨0点执行0 0/5 * * * *:每隔5分钟执行一次0 0 0/1 * * *:每隔1小时执行一次0 0 8-18 * * *:每天上午8点到下午6点之间每隔1小时执行一次0 0 12 * * 1-5:每周一到周五中午12点执行0 0 0 1 * *:每个月1号凌晨0点执行0 0 0 1 1 *:每年1月1日凌晨0点执行
除了上述示例之外,还可以在cron表达式中使用*、,、-、/等符号进行更加灵活的设置,例如:0 0 1,2,3 * * *:每天凌晨1点、2点、3点执行0 0 8-10,12-14 * * *:每天上午8点到10点和下午12点到2点之间每隔1小时执行一次0 0 0 1-7/2 * *:每月的第1天、3天、5天、7天凌晨0点执行一次
其中,/符号表示步长,例如0/5 * * * * *表示每隔5秒执行一次。
下面是关于cron表达式的详细解释:
cron表达式是用于指定定时任务执行时间的一种方式,它可以通过6个或7个时间字段来表示具体的执行时间。6个时间字段表示的时间分别是:秒、分、时、日、月、周;7个时间字段表示的时间比6个多了一个年份。每个时间字段都可以使用数字、逗号、星号、减号、斜杠和问号等字符来表示不同的取值范围和间隔。
下面是各个时间字段的含义:
时间字段 允许的值 允许的特殊字符
秒 0-59 , - * /
分 0-59 , - * /
时 0-23 , - * /
日 1-31 , - * ? / L W C
月 1-12 , - * /
周 0-7 , - * ? / L C #
年 1970-2099 , - * /
其中,星号 * 表示“所有值”。例如,* * * * * * 表示每秒钟都会触发一次定时任务。
问号 ? 表示不指定具体的值,通常用于日和周这两个时间字段中,表示这个时间字段不关心具体的取值。例如,0 0 ? * * * 表示在每天的0点0分触发定时任务,而日期和周都不关心具体的取值。
在设置周这个时间字段时,必须使用7个时间字段,因为6个时间字段无法区分每周的哪一天。例如,如果需要在每周的周一和周五触发定时任务,可以使用以下的 cron 参数:0 0 0 ? * MON,FRI *,其中 MON,FRI 表示周一和周五。
下面是6位和7位cron表达式的代码示例:
// 6位cron表达式,每秒执行一次
@Scheduled(cron = "* * * * * *")
public void scheduleTask() {// 定时任务执行的代码
}
// 7位cron表达式,每周一和周五的凌晨2点执行一次
@Scheduled(cron = "0 0 2 ? * MON,FRI *")
public void scheduleTask() {// 定时任务执行的代码
}
0/5 和 */5 都表示每5秒钟触发一次定时任务,但是它们的含义略有不同。0/5 表示从0秒开始,每5秒钟触发一次,例如:0/5 * * * * ? 表示每分钟内的0秒、5秒、10秒、15秒等都会触发定时任务。而 /5 表示每隔5秒钟触发一次,例如:/5 * * * * ? 表示每分钟内的所有秒数,但是只有5的倍数时才会触发定时任务。
每个小时的第5分钟执行一次:
@Scheduled(cron = "0 5 * * * ?")
public void scheduleTask() {// 定时任务执行的代码
}
每5分钟执行一次:
@Scheduled(cron = "0 */5 * * * ?")
public void scheduleTask() {// 定时任务执行的代码
}
每50秒钟执行一次:
@Scheduled(cron = "*/50 * * * * ?")
public void scheduleTask() {// 定时任务执行的代码
}
每分钟的第50秒执行一次:
@Scheduled(cron = "50 * * * * ?")
public void scheduleTask() {// 定时任务执行的代码
}
每天的第5个小时执行一次:
@Scheduled(cron = "0 0 5 * * ?")
public void scheduleTask() {// 定时任务执行的代码
}
每隔5小时执行一次:
@Scheduled(cron = "0 0 */5 * * ?")
public void scheduleTask() {// 定时任务执行的代码
}
每个月的5号执行一次:
@Scheduled(cron = "0 0 0 5 * ?")
public void scheduleTask() {// 定时任务执行的代码
}
每年的5月份执行一次:
@Scheduled(cron = "0 0 0 1 5 ?")
public void scheduleTask() {// 定时任务执行的代码
}
每五个月执行一次:
@Scheduled(cron = "0 0 0 */5 * ?")
public void scheduleTask() {// 定时任务执行的代码
}
每周5执行一次:
@Scheduled(cron = "0 0 0 ? * FRI")
public void scheduleTask() {// 定时任务执行的代码
}
每隔5周执行一次:
@Scheduled(cron = "0 0 0 */35 * ?")
public void scheduleTask() {// 定时任务执行的代码
}
每五年执行一次:
@Scheduled(cron = "0 0 0 1 1 ? */5")
public void scheduleTask() {// 定时任务执行的代码
}
本文标签: Scheduled(cron““)cron参数的用法,场景示例
版权声明:本文标题:@Scheduled(cron = ““)cron参数的用法,场景示例 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1732355021h1534182.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论