1、初识Quartz
1.1、概述
- Quartz是一个完全由Java编写的一个开源的任务调度框架,说的简单点就是开发人员可以通过Quartz根据时间间隔调度任务,例如:
- 每隔一小时命令程序执行一个任务
- 每个月命令程序执行一个任务
- 指定某月末日命令程序执行一个任务
- ……
- 每隔一小时命令程序执行一个任务
- Quartz下载地址:http://www.quartz-scheduler.org/downloads/
1.2、Quartz API
1.2.1、Scheduler——与scheduler交互的主要API;
Scheduler的生命周期从SchedulerFactory创建它时开始,到Scheduler调用showdown()方法结束。Scheduler只有在调度start()方法后才会真正的触发trigger(执行job)。Scheduler被创建后可以增加、删除、和列举Job和Trigger,以及执行其它与调度相关的操作。
1.2.2、Job——由调度程序执行的任务需要实现的接口
1.2.3、JobDetail——定义Job的实例
1.2.4、Trigger——触发Job的执行
1.2.5、JobBuilder——定义创建JobDetail实例的接口
1.2.6、TriggerBuilder——定义创建Trigger实例的接口
2、Hello Quartz 简单运用
2.1、首先实现一个简单的小demo《Hello Quartz!》,具体需求:每隔5秒通过控制台输出一句“hello quartz!”;
2.2、代码
1 package com.xxw.test; 2 3 import org.quartz.Job; 4 import org.quartz.JobExecutionContext; 5 import org.quartz.JobExecutionException; 6 7 public class MyJob implements Job{ 8 9 @Override 10 public void execute(JobExecutionContext arg0) throws JobExecutionException { 11 System.out.println("hello quartz!"); 12 } 13 14 }
1 package com.xxw.test; 2 3 import static org.quartz.JobBuilder.newJob; 4 import static org.quartz.SimpleScheduleBuilder.simpleSchedule; 5 import static org.quartz.TriggerBuilder.newTrigger; 6 7 import org.quartz.JobDetail; 8 import org.quartz.Scheduler; 9 import org.quartz.Trigger; 10 import org.quartz.impl.StdSchedulerFactory; 11 12 public class HellowQuartz { 13 14 public static void main(String[] args) { 15 try { 16 // 定义JobDetail 17 JobDetail job = newJob(MyJob.class) // 定义Job类为MyJob类,这个类是任务逻辑类 18 .withIdentity("job1", "group1") // 定义name/group 19 .build(); 20 21 // 定义一个Trigger 22 Trigger trigger = newTrigger() 23 .withIdentity("trigger1", "group1") // 定义name/group 24 .startNow() // 一旦加入scheduler,立刻生效 25 .withSchedule( 26 simpleSchedule() // 使用simpleSchedule 27 .withIntervalInSeconds(5) // 每隔5秒执行一次 28 .repeatForever()) // 一直执行 29 .build(); 30 31 // 实例 Schedule 调度器 32 Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler(); 33 // 添加调度 34 scheduler.scheduleJob(job, trigger); 35 // 启动 36 scheduler.start(); 37 38 } catch (Exception e) { 39 e.printStackTrace(); 40 } 41 } 42 }