- 第一步,引入jar包
<!--任务调度框架quartz-->
<!-- https://mvnrepository.com/artifact/org.quartz-scheduler/quartz -->
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.3.2</version>
</dependency>
- 第二步,编写调度类来实现调度任务
public class QuartzMain {
// 创建作业任务调度器(类似于公交调度站)
public static Scheduler createScheduler() throws SchedulerException {
SchedulerFactory schedulerFactory = new StdSchedulerFactory();
Scheduler scheduler = schedulerFactory.getScheduler();
return scheduler;
}
// 创建⼀个作业任务(类似于⼀辆公交⻋)
public static JobDetail createJob(){
JobBuilder jobBuilder = JobBuilder.newJob(DemoJob.class);
jobBuilder.withIdentity("JobDetail","myJob");
JobDetail jobDetail = jobBuilder.build();
return jobDetail;
}
/**
* 创建作业任务时间触发器(类似于公交⻋出⻋时间表)
* cron表达式由七个位置组成,空格分隔
* 1、Seconds(秒) 0~59
* 2、Minutes(分) 0~59
* 3、Hours(⼩时) 0~23
* 4、Day of Month(天)1~31,注意有的⽉份不⾜31天
* 5、Month(⽉) 0~11,或者
JAN,FEB,MAR,APR,MAY,JUN,JUL,AUG,SEP,OCT,NOV,DEC
* 6、Day of Week(周) 1~7,1=SUN或者 SUN,MON,TUE,WEB,THU,FRI,SAT
* 7、Year(年)1970~2099 可选项
*示例:
* 0 0 11 * * ? 每天的11点触发执⾏⼀次
* 0 30 10 1 * ? 每⽉1号上午10点半触发执⾏⼀次
*/
// 创建时间触发器,按⽇历调度
public static Trigger createTrigger(){
CronTrigger trigger = TriggerBuilder.newTrigger()
.withIdentity("JobDetail", "myJob").startNow()
.withSchedule(CronScheduleBuilder.cronSchedule("0/2 * * * * ?"))
.build();
return trigger;
}
// 定时任务作业主调度程序
public static void main(String[] args) throws SchedulerException {
// 创建⼀个作业任务调度器(类似于公交调度站)
Scheduler scheduler = QuartzMain.createScheduler();
// 创建⼀个作业任务(类似于⼀辆公交⻋)
JobDetail job = QuartzMain.createJob();
// 创建⼀个作业任务时间触发器(类似于公交⻋出⻋时间表)
Trigger trigger = QuartzMain.createTrigger();
// 使⽤调度器按照时间触发器执⾏这个作业任务
scheduler.scheduleJob(job, trigger);
scheduler.start();
}
}
- 第三步,写一个类来实现Job接口
public class DemoJob implements Job {
@Override
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
System.out.println("我是⼀个定时任务逻辑");
}
}
最终执行结果如下