quartz框架
基本使用示例
package com.tsymq.thread.advanced;
import static org.quartz.DateBuilder.evenMinuteDate;
import static org.quartz.DateBuilder.evenSecondDateAfterNow;
import static org.quartz.JobBuilder.newJob;
import static org.quartz.SimpleScheduleBuilder.simpleSchedule;
import static org.quartz.TriggerBuilder.newTrigger;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerFactory;
import org.quartz.Trigger;
import org.quartz.impl.StdSchedulerFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.Date;
/**
* @Date 2020/3/31 13:30
* @Author TSYMQ
* @Description :
* quartz基础学习
*/
public class QuartzTest {
public void run() throws Exception {
Logger log = LoggerFactory.getLogger(QuartzTest.class);
log.info("------- Initializing ----------------------");
// 1、创建scheduler工厂
SchedulerFactory sf = new StdSchedulerFactory();
///2、从工厂中获取调度器
Scheduler sched = sf.getScheduler();
log.info("------- Initialization Complete -----------");
// 时间 每1秒钟
Date runTime = evenSecondDateAfterNow();
log.info("------- Scheduling Job -------------------");
///3、创建JobDetail
JobDetail job = newJob(HelloJob.class).withIdentity("job1", "group1").build();
// 4、触发器
// Trigger trigger = newTrigger().withIdentity("trigger1", "group1").startAt(runTime).build();
Trigger trigger = newTrigger().withIdentity("trigger1", "group1").startAt(runTime)
.withSchedule(simpleSchedule().withIntervalInSeconds(5).withRepeatCount(5)).build();
// 5、注册任务和触发条件
sched.scheduleJob(job, trigger);
log.info(job.getKey() + " will run at: " + runTime);
// 6、启动
sched.start();
log.info("------- Started Scheduler -----------------");
log.info("------- Waiting 5 seconds... -------------");
try {
// 50秒后停止
Thread.sleep(50000);
log.info("------- Shutting Down ---------------------");
sched.shutdown(true);
log.info("------- Shutdown Complete -----------------");
} catch (Exception e) {
}
}
public static void main(String[] args) throws Exception {
QuartzTest example = new QuartzTest();
example.run();
}
}