Quartz的三个核心概念:
1、调度器(scheduler)
2、任务(JobDetail)
3、触发器(trigger)
第一步:使用java工程导入quartz所依赖的jar包(使用的是maven工程就在pom.xml文件添加依赖)
引入quartz会引入quartz.jar、c3p0.jar、slf4j.jar这三个jar包
第二步:创建job类
import java.text.SimpleDateFormat;
import java.util.Date;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
public class MyJob implements Job{
@Override
public void execute(JobExecutionContext arg0) throws JobExecutionException {
//打印当前的执行时间
Date date=new Date();//得到当前时间的毫秒
SimpleDateFormat sf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String currentTime=sf.format(date);
//具体的业务逻辑,需要做的内容
System.out.println("执行任务:"+currentTime);
}
}
第三步:创建调度器类
import java.text.SimpleDateFormat;
import java.util.Date;
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 MyScheduler {
public static void main(String[] args) throws SchedulerException {
//创建一个Jobdetail实列,将该实例与MyJob class绑定
JobDetail jobDetail =JobBuilder.newJob(MyJob.class).withIdentity("myJob", "group1").build();
System.out.println(jobDetail.getKey().getName());
System.out.println(jobDetail.getKey().getGroup());
System.out.println(jobDetail.getJobClass().getName());
//创建一个Trigger实例,定义该job立即执行,并且每隔5秒钟重复执行一次,直到永远
Trigger trigger=TriggerBuilder.newTrigger().withIdentity("myTrigger", "group1")
.startNow().withSchedule(SimpleScheduleBuilder.simpleSchedule()
.withIntervalInSeconds(5).repeatForever()).build();
//创建Scheduler实列(将任务和触发器传到调度器里面)
SchedulerFactory scf=new StdSchedulerFactory();//实列一个工厂
Scheduler scheduler=scf.getScheduler();
scheduler.start();//调度器开始执行
//打印当前的执行时间
Date date=new Date();//得到当前时间的毫秒
SimpleDateFormat sf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String currentTime=sf.format(date);
System.out.println("执行任务:"+currentTime);
scheduler.scheduleJob(jobDetail,trigger);//将任务和触发器传到调度器里面
}
}