@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 *:每年11日凌晨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() {
    // 定时任务执行的代码
}
  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值