Spring定时任务常用Cron表达式

        我们在做springboot项目时候,经常会用到定时任务,而用到定时任务就一定会涉及到Cron表达式的书写

一、Cron表达式是什么?

Cron:计划任务,是任务在约定的时间执行已经计划好的工作,而Cron表达式是一个字符串,字符串以5或6个空格隔开,分为6或7个域,每一个域代表一个含义

二、Cron表达式的结构

{秒数} {分钟} {小时} {日期} {月份} {星期} {年份(可为空)}

字段允许值特殊字符
0-59, -   *  /
0-59, -  *  / 
小时0-23, -  * /
日期1-31, - * ? / L W C
月份1-12或 JAN-DEC, - * / 
星期1-7 或 SUN-SAT, - * ? / L C #
年(可不写)1970-2099, - * /

三、特殊符号解释

        这里只解释星期,其他类似

  • " , "

        代表指定的星期触发,例如,1,2,5 代表星期天、星期一、星期四触发" - " 

  • "  -"

        代表指定范围內触发,如1-3 代表从星期日到星期二(国外星期日算第一天),每隔一天触发一次

  • " * "

        代表每个星期都触发

  • " / "

        代表触发步进,"/"前面的值代表初始值("*"等同"1"),后面的值代表偏移量,比如"1/4"或者"*/4"代表从星期天开始触发,每隔4天触发1次;"1-5/2"表达式意味着在[1,5]范围内,每隔2天触发,即星期天、星期二、星期四触发

  • " L "

        有last,最后的意思,表示星期的最后一天触发(这里是周六),"4L"表示一个月的最后一个星期三触发

  • " # "

        "#" 代表具体的周数,"#"前面代表星期,"#"后面代表本月第几周,比如"2#2"表示本月第二周的星期一,"5#3"表示本月第三周的星期四,"4L"是"#"的特殊形式

四、常用Cron表达式 

要求表达式
每隔3秒钟执行一次 */3  *  *  *  *  ?
每天中午12点执行一次0 0 12 * * ?
每天上午10:30执行一次

0 30 10 ? * *

0 30 10 * * ?

0 30 10 * * ? *

2022年的每天上午10:30执行一次0 30 10 * * ? 2022
每天下午5点到下午5:59每分钟执行一次0 * 17 * * ?
 周一到周五每天上午10:15执行0  15  10  ?  *  2-6
每天上午8点,下午1点,4点执行一次0  0  8,13,16  * * ?
每月的第4个星期五上午10:30执行一次0  30  10  ?  *  6#4
每月的最后一个星期五上午10:30执行一次0 30 10 ? * 6L

总结

        当然,最后也有在线生成工具:在线Cron表达式生成器 (qqe2.com)

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java可以使用cron表达式来实现定时任务cron表达式由7个时间元素组成,分别为秒、分、时、日期、月份、星期几和年份。其中,年份是可选的,一般不需要指定。Spring 4.x的Spring Task只支持前6个时间元素,而Quartz框架则支持完整的7个时间元素。 下面是一个使用Java实现定时任务的示例代码: ```java import org.quartz.*; import org.quartz.impl.StdSchedulerFactory; public class CronScheduler { public static void main(String[] args) throws SchedulerException { // 创建调度器 Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler(); // 创建任务 JobDetail job = JobBuilder.newJob(MyJob.class).build(); // 创建触发器,使用cron表达式 Trigger trigger = TriggerBuilder.newTrigger() .withSchedule(CronScheduleBuilder.cronSchedule("0 0 12 * * ?")) // 每天中午12点执行 .build(); // 将任务和触发器绑定到调度器 scheduler.scheduleJob(job, trigger); // 启动调度器 scheduler.start(); } } public class MyJob implements Job { @Override public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException { // 在这里写你的定时任务逻辑 System.out.println("定时任务执行了"); } } ``` 上述代码中,首先创建了一个调度器对象,然后创建了一个任务对象(实现了Job接口),并创建了一个触发器对象,通过`withSchedule`方法传入cron表达式来指定任务执行的时间。最后,将任务和触发器绑定到调度器,并启动调度器。 以上就是使用Java实现定时任务的简单示例。你可以根据需要自定义定时任务的逻辑和cron表达式来实现不同的定时功能。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值