Spring3 中的Schedule Task以及Quartz中的Cron表达式

 Cron表达式使用格式

SecondsMinutesHoursDayofMonthMonthDayofWeek[Year]
[年]

每个符号代表的含义:

  1. *:匹配该域的任意值;如*用在分所在的域,表示每分钟都会触发事件。
  2. ?:匹配该域的任意值。
  3. -:匹配一个特定的范围值;如时所在的域的值是10-12,表示10、11、12点的时候会触发事件。
  4. ,:匹配多个指定的值;如周所在的域的值是2,4,6,表示在周一、周三、周五就会触发事件(1表示周日,2表示周一,3表示周二,以此类推,7表示周六)。
  5. /:左边是开始触发时间,右边是每隔固定时间触发一次事件,如秒所在的域的值是5/15,表示5秒、20秒、35秒、50秒的时候都触发一次事件。
  6. L:last,最后的意思,如果是用在天这个域,表示月的最后一天,如果是用在周所在的域,如6L,表示某个月最后一个周五。(外国周日是星耀日,周一是月耀日,一周的开始是周日,所以1L=周日,6L=周五。)
  7. W:weekday,工作日的意思。如天所在的域的值是15W,表示本月15日最近的工作日,如果15日是周六,触发器将触发上14日周五。如果15日是周日,触发器将触发16日周一。如果15日不是周六或周日,而是周一至周五的某一个,那么它就在15日当天触发事件。
  8. #:用来指定每个月的第几个星期几,如6#3表示某个月的第三个星期五。

实用的例子 表达式 含义

“0 0 12 * * ?”每天12:00触发事件
“0 15 10 ? * *”每天10:15触发事件
“0 15 10 * * ?”每天10:15触发事件
“0 15 10 * * ? *”每天10:15触发事件
“0 15 10 * * ? 2005″2005年的每天10:15触发事件
“0 * 14 * * ?”每天14点开始触发,每分钟触发一次,14:59分结束
“0 0/5 14 * * ?”每天14点开始触发到14:59分结束的每5分钟触发一次事件
“0 0/5 14,18 * * ?”每天14点开始到14:59期间和18点到18:59期间的每5分钟触发一次事件
“0 0-5 14 * * ?”每天14点到14:05期间的每1分钟触发一次事件
“0 10,44 14 ? 3 WED”每年3月的星期三的14:10和14:44触发一次事件
“0 15 10 ? * MON-FRI”周一至周五的10:15触发一次事件
“0 15 10 15 * ?”每月15日10:15触发一次事件
“0 15 10 L * ?”每月最后一日的10:15触发一次事件
“0 15 10 ? * 6L”每月的最后一个星期五10:15触发一次事件
“0 15 10 ? * 6L 2002-2005″2002年至2005年的每月的最后一个星期五10:15触发一次事件
“0 15 10 ? * 6#3″每月的第三个星期五10:15触发一次事件
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值