只是为了记录下,为以后需要的时候有个参考。


版本:Quartz 2.x


导入依赖包

import static org.quartz.TriggerBuilder.newTrigger;

import org.quartz.CronScheduleBuilder;
import org.quartz.CronTrigger;
import org.quartz.JobBuilder;
import org.quartz.JobDataMap;
import org.quartz.JobDetail;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SchedulerFactory;
import org.quartz.impl.StdSchedulerFactory;

调度的创建:

public static Scheduler scheduler;
//定时调度时间配置。每小时15分的时候执行
String scheCronExpress = "0 0/15 * * * ?";
static {
    // 静止检查更新
    System.setProperty("org.terracotta.quartz.skipUpdateCheck", "true");
    SchedulerFactory sf = new StdSchedulerFactory();
    try {
    	scheduler = sf.getScheduler();
	scheduler.start();
    } catch (Exception e) {
	e.printStackTrace();
    }
}

创建用于执行的Job

/**
  * 定时调度执行类
  * */
 public class ScheduleJob implements org.quartz.Job {

      public void execute(JobExecutionContext context)
          throws JobExecutionException {
              Date filreTime = context.getFireTime();
              JobDataMap dataMap = context.getMergedJobDataMap(); 
              //TODO 调度时候执行的逻辑代码
   
      }
 }

添加调度任务

public void addCronJob(String cronexpress){
    String groupName = UUID.randomUUID().toString();
    JobDataMap newJobDataMap = new JobDataMap();
    newJobDataMap.put("outer", this);
    // 创建Job
    JobDetail job = JobBuilder.newJob(ScheduleJob.class)
                        .withIdentity("job-" + groupName, groupName)
			.usingJobData(newJobDataMap)
			.build();
    // 构建触发器
    CronTrigger trigger = newTrigger().withIdentity("trigger-" + groupName, groupName)
			.withSchedule(CronScheduleBuilder.cronSchedule(cronexpress))
			.build();
    //任务和触发器关联
    scheduler.scheduleJob(job, trigger);
}