核心概念
- quartz不需要依赖任何框架即可使用
- Job:要执行得任务, JobDetail:对job的描述
- Scheduler:调度器
- Trigger 触发器
cron表达式
-
cron表达式
-
基本格式: 秒 分 小时 日期 月份 星期 年份(一般忽略)
-
- 任何一个数字都触发
-
n/m 从n开始。每隔m 执行 (*/m 等同于 0/m)
-
n-m 从n到m 每个单位触发一次
-
n1,n2,n3,n4 在指定的这几个点执行
-
? 特殊情况使用: 星期和日期有冲突时有一个必须使用
CronScheduleBuilder schedBuilder = CronScheduleBuilder
.cronSchedule("* * * * * ?");//cron表达式
每天凌晨2点执行
CronScheduleBuilder schedBuilder = CronScheduleBuilder .cronSchedule("0 0 2 * * ?");
每5分钟执行一次
CronScheduleBuilder schedBuilder = CronScheduleBuilder .cronSchedule("0 0/5 * * * ?");
-
quartz使用
-
quartz使用
先创建一个任务 (继承Job)
public class MyJob implements Job{ public void execute(JobExecutionContext context) throws JobExecutionException { System.out.println("自定义我的任务:"+new Date()); } }
调度器的使用
-
由一个JobDetail描述一个具体任务job
-
Trigger描述一个触发规则
-
Scheduler负责调度
public class TestQuartz { public static void main(String[] args) throws SchedulerException { //调度器工厂类 SchedulerFactory factory = new StdSchedulerFactory(); Scheduler scheduler = factory.getScheduler(); //开始工作 scheduler.start(); //创建Job的描述也就是JobDetail (JobBuilder来创建) withIdentity 前面参数是名称 后面参数是组 JobDetail detail = JobBuilder.newJob(MyJob.class)//获取作业对象 .withIdentity("testJob","groudJob") .build(); //为trigger定义规则 CronScheduleBuilder schedBuilder = CronScheduleBuilder .cronSchedule("* * * * * ?");//cron表达式 //创建一个触发器 Trigger trigger =TriggerBuilder.newTrigger() .withIdentity("testTrigger","testGroup")//第一个参数为名称 第二个为组 .withSchedule(schedBuilder) //提供触发规则 .startNow()//马上按照规则执行 .build();//创建 //开始调度 scheduler.scheduleJob(detail,trigger); }
}
-