how2j.cn

下载区
文件名 文件大小
quartz.rar 1m
使用站长秘制下载工具
步骤 1 : CronTrigger 是什么?   
步骤 2 : TestQuartz   
步骤 3 : 理解Cron   
步骤 4 : Cron 表达式举例   

步骤 1 :

CronTrigger 是什么?

edit edit
Cron 是Linux下的一个定时器,功能很强大,但是表达式更为复杂
CronTrigger 就是用 Cron 表达式来安排触发时间和次数的。

因为Cron 特别复杂,如果以前接触过,可以按照Cron表达式来做触发器,没有接触过,还是用SimpleTrigger吧。。。
这个Cron 表达式就表示每隔2秒执行一次

0/2 * * * * ?

如图所示,每隔2秒执行一次。
为什么这个表达式就是这个效果呢?黑人问号脸? 看下一步:理解Cron
TestQuartz
package com.how2java; import static org.quartz.CronScheduleBuilder.cronSchedule; import static org.quartz.JobBuilder.newJob; import static org.quartz.TriggerBuilder.newTrigger; import static org.quartz.SimpleScheduleBuilder.simpleSchedule; import java.util.Date; import org.quartz.CronTrigger; import org.quartz.DateBuilder; import org.quartz.JobDetail; import org.quartz.Scheduler; import org.quartz.SimpleTrigger; import org.quartz.impl.StdSchedulerFactory; public class TestQuartz { public static void main(String[] args) throws Exception{ Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler(); Date startTime = DateBuilder.nextGivenSecondDate(null, 8); JobDetail job = newJob(MailJob.class).withIdentity("mailJob", "mailGroup").build(); CronTrigger trigger = newTrigger().withIdentity("trigger1", "group1").withSchedule(cronSchedule("0/2 * * * * ?")) .build(); // schedule it to run! Date ft = scheduler.scheduleJob(job, trigger); System.out.println("使用的Cron表达式是:"+trigger.getCronExpression()); // System.out.printf("%s 这个任务会在 %s 准时开始运行,累计运行%d次,间隔时间是%d毫秒%n", job.getKey(), ft.toLocaleString(), trigger.getRepeatCount()+1, trigger.getRepeatInterval()); scheduler.start(); //等待200秒,让前面的任务都执行完了之后,再关闭调度器 Thread.sleep(200000); scheduler.shutdown(true); } }

0/2 * * * * ?

由7个部分组成,每个部分就如图所示分别对应秒 分 一直到年

星号():可用在所有字段中,表示对应时间域的每一个时刻,例如, 在分钟字段时,表示“每分钟”;
问号(?):该字符只在日期和星期字段中使用,它通常指定为“无意义的值”,相当于点位符;
减号(-):表达一个范围,如在小时字段中使用“10-12”,则表示从10到12点,即10,11,12;
逗号(,):表达一个列表值,如在星期字段中使用“MON,WED,FRI”,则表示星期一,星期三和星期五;

这里有个Cron表达式生成工具,可以参考一下: http://cron.qqe2.com/
理解Cron
步骤 4 :

Cron 表达式举例

edit edit
Cron 表达式举例


HOW2J公众号,关注后实时获知最新的教程和优惠活动,谢谢。


提问已经提交成功,正在审核。 请于 我的提问 处查看提问记录,谢谢
关于 工具和中间件-quartz-CronTrigger 的提问

尽量提供截图代码异常信息,有助于分析和解决问题。 也可进本站QQ群交流: 982790551
提问尽量提供完整的代码,环境描述,越是有利于问题的重现,您的问题越能更快得到解答。
对教程中代码有疑问,请提供是哪个步骤,哪一行有疑问,这样便于快速定位问题,提高问题得到解答的速度
在已经存在的几千个提问里,有相当大的比例,是因为使用了和站长不同版本的开发环境导致的,比如 jdk, eclpise, idea, mysql,tomcat 等等软件的版本不一致。
请使用和站长一样的版本,可以节约自己大量的学习时间。 站长把教学中用的软件版本整理了,都统一放在了这里, 方便大家下载: https://how2j.cn/k/helloworld/helloworld-version/1718.html

上传截图