一 点睛
1 Scheduler是通过工厂模式创建的。
所有的Scheduler实例由SchedulerFactory来创建。
2 Quartz的三个核心概念
- 调度器
- 任务
- 触发器
3 Scheduler的创建方式
SchedulerFactory schedulerFactory = new StdSchedulerFactory();
Scheduler scheduler = schedulerFactory.getScheduler();
DirectSchedulerFactory factory = DirectSchedulerFactory.getInstance();
Scheduler scheduler1=factory.getScheduler();
4 SchedulerFactory
使用一组参数来创建和初始化Quartz调度器
配置参数一般存储在quartz.properties中
调用getScheduler方法就能创建和初始化调度器对象
5 Scheduler的主要函数
- Date scheduleJob(JobDetail jobDetail, Trigger trigger):返回最近一次要执行任务的时间
- void start():启动
- void standby():暂停
- void shutdown():完全关闭,不能再重启
二 实战——scheduleJob返回值
1 启动类
package com.quartz;
import org.quartz.*;
import org.quartz.impl.DirectSchedulerFactory;
import org.quartz.impl.StdSchedulerFactory;
import java.text.SimpleDateFormat;
import java.util.Date;
public class HelloScheduler {
public static void main( String[] args ) throws SchedulerException {
Date date = new Date();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("Current Time is:" + simpleDateFormat.format(date));
//创建一个JobDetail实例, 将该实例与hellojob class 绑定
JobDetail jobDetail = JobBuilder.newJob(HelloJob.class)
.withIdentity("myJob").build(); //演示传递参数
CronTrigger trigger = (CronTrigger) TriggerBuilder.newTrigger()
.withIdentity("myTrigger", "group1")
.withSchedule(
CronScheduleBuilder.cronSchedule("0/5 * 16,18 * * ?"))
.build();
//创建Schedule实例
SchedulerFactory schedulerFactory = new StdSchedulerFactory();
Scheduler scheduler = schedulerFactory.getScheduler();
scheduler.start();
//scheduleJob返回的是最近一次要执行的时间
System.out.println("scheduled time is:"
+ simpleDateFormat.format(scheduler.scheduleJob(jobDetail, trigger)));
}
}
2 测试结果
Current Time is:2018-11-17 14:15:01
scheduled time is:2018-11-17 16:00:00
三 实战——演示standby
1 启动类
package com.quartz;
import org.quartz.*;
import org.quartz.impl.DirectSchedulerFactory;
import org.quartz.impl.StdSchedulerFactory;
import java.text.SimpleDateFormat;
import java.util.Date;
public class HelloSch