1.新建一个maven项目,
2.去maven库下载quartz用到的jar包,
<!-- https://mvnrepository.com/artifact/org.quartz-scheduler/quartz -->
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.3.0</version>
</dependency>
3.创建第一个类
package com.qq.HelloQuartz;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
public class HelloJob implements Job{
public void execute(JobExecutionContext arg0) throws JobExecutionException {
//打印当前的执行时间 ,格式为2017-02-02 00:00:00
Date date = new Date();
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("Current Exec Time is : " + sf.format(date));
// 编写具体的项目逻辑
System.out.println("Hello World!");
}
}
4.创建第二个类
package com.qq.HelloQuartz;
import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SchedulerFactory;
import org.quartz.SimpleScheduleBuilder;
import org.quartz.Trigger;
import org.quartz.TriggerBuilder;
import org.quartz.impl.StdSchedulerFactory;
public class HelloScheduler {
public static void main(String[] args) throws SchedulerException {
// 创建一个JobDetail示例,将该实例与HelloJob Class绑定
JobDetail jobDetail = JobBuilder.newJob(HelloJob.class).withIdentity("job", "group").build();
// 创建一个Trigger示例,定义该job立即执行,并且每隔两秒钟重复执行一次,直到永远
Trigger trigger = TriggerBuilder.newTrigger().withIdentity("trigger", "group").startNow()
.withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(2).repeatForever()).build();
// 创建Scheduler示例
SchedulerFactory sfact = new StdSchedulerFactory();
Scheduler scheduler = sfact.getScheduler();
scheduler.start();
scheduler.scheduleJob(jobDetail, trigger);
}
}
5.测试运行
6.Job实例在quartz的生命周期
每次调度器执行job的时候,调度器会在调用execute方法之前
创建一个一个新的job示例,在调用结束的时候,关联的job对
象实例被释放,然后呗垃圾回收器回收。
7.JobDetail
为Job示例提供很多设置属性
重要属性:
System.out.println("JobDetail的名字: " + jobDetail.getKey().getName());
System.out.println("JobDetail所在的组 : " + jobDetail.getKey().getGroup());
System.out.println("JobDetail任务实现类 : " + jobDetail.getKey().getClass());
1)name任务名称
JobDetail jobDetail = JobBuilder.newJob(HelloJob.class).withIdentity("job", "group").build();
"job", "group").build();
2)group任务所在的组
JobDetail jobDetail = JobBuilder.newJob(HelloJob.class).withIdentity("job", "group").build();
"group").build();
3)jobClass任务的实现类
HelloJob
4)jobDataMap传参的作用