1、先简单的进行实现,不进行任何的配置
官网下载jar包:http://www.quartz-scheduler.org/downloads/
下载之后解压会有这些jar包
2、创建一个类Quartz
public class Quartz {
public static void main(String[] args) throws InterruptedException {
try {
//通过SchedulerFactory获取任务调度器Schedule对象
SchedulerFactory sf=new StdSchedulerFactory();
Scheduler sched=sf.getScheduler();
//新建一个job
JobDetail job = JobBuilder.newJob(MyJob.class).withIdentity("job1", "group1").build();
//定义一个触发器,执行job的规则(秒 分 时 日 月 年)
CronTrigger trigger = TriggerBuilder.newTrigger().withIdentity("trigger1", "group1").withSchedule(CronScheduleBuilder.cronSchedule("0/10 * * * * ?"))
.build();
//job和触发器装载进调度器schedule
Date ft = sched.scheduleJob(job, trigger);
System.out.println(job.getKey() + " has been scheduled to run at: " + ft + " and repeat based on expression: "
+ trigger.getCronExpression());
//启动
sched.start();
/* //关闭
Thread.sleep(30000);
sched.shutdown(true);*/
} catch (SchedulerException e) {
e.printStackTrace();
}
}
}
3、创建具体执行的定时任务,一个类MyJob继承Job
public class MyJob implements org.quartz.Job{
@Override
public void execute(JobExecutionContext arg0) throws JobExecutionException {
System.out.println("任务执行的时间:"+new Date());
}
}
4、运行即可看见后台每隔10s打印一次“任务执行的时间:。。。。。”
总结:这里面涉及到job、jobDetail、Trigger、Scheduler
1、job:要执行的内容,此接口只有一个方法void execute(JobExecutionContext context)
2、jobDetail:表示一个具体的可执行的调度程序,job是这个调度程序的内容,另外jobDetail还包含了这个任务调度的方案和策略
3、Trigger:代表调度参数的配置什么时候去调
4、Scheduler:代表一个调度容器,一个调度容器中可以注册多个JobDetail和Trigger,当Trigger与JobDetail组合,就可以被Scheduler容器调度了
Scheduler是一个容器,容器中有一个线程池,用来并行调度执行每个作业,容器里面盛放很多的JobDetail和Trigger,当容器启动,JobDetail会根据关联的Trigger去执行(JobDetail和Trigger组成一对),当容器关闭,所有的JobDetail停止执行