Quartz :定时异步任务
- 任务:做什么事情… StudentService
- 触发器:定义时间
- 调度器:将任务、触发器 一 一对应
实现步骤:(独立使用)
1.jar
- log4j.jar quartz.jar quartz-jobs.jar slf4j.jar slf4j-log4j.jar
2. 任务(Serivce…) :Job
具体任务
public class JobService {
public void callWorking(){
System.out.println("该工作了。。。。。");
}
}
任务执行
public class PlanJob implements Job {
private JobService jobService = new JobService();
@Override
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
jobService.callWorking();
}
}
3.测试方法:;将Job 、 触发器 、调度器 三者统一
public class Test01 {
public static void main(String[] args) throws SchedulerException {
//*产生使用时的job
JobBuilder jobBuilder = JobBuilder.newJob(PlanJob.class);
JobDetail jobDetail = jobBuilder.withIdentity("working", "group01").build();
// 产生触发器时间规则, 依赖两个对象 (TriggerBuilder , Scheduled)
TriggerBuilder<Trigger> triggerBuilder = TriggerBuilder.newTrigger();
triggerBuilder = triggerBuilder.withIdentity("working trigger", "group01");
triggerBuilder.startNow();//满足条件运行
SimpleScheduleBuilder simpleSchedule = SimpleScheduleBuilder.simpleSchedule();
simpleSchedule.withRepeatCount(2);//重复2次 加上第一次 总共3次
simpleSchedule.withIntervalInSeconds(2);//2秒执行一次
// 产生触发器
SimpleTrigger simpleTrigger = triggerBuilder.withSchedule(simpleSchedule).build();
// 产生调度器
Scheduler scheduler = new StdSchedulerFactory().getScheduler();
Date date = scheduler.scheduleJob(jobDetail, simpleTrigger);
scheduler.start();
System.out.println(date);
// scheduler.shutdown(true);
}
}
scheduler.shutdown():立刻关闭
scheduler.shutdown(false):shutdown()立刻关闭
scheduler.shutdown(true):将当前任务执行完毕后 再关闭
让其在时间段内执行(在时间规则处 添加以下代码)
//定义时间的解析规则
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date start = format.parse("2019-7-23 16:37:56");
Date end = format.parse("2019-7-23 16:38:10");
triggerBuilder.startAt(start);
triggerBuilder.endAt(end);