1、引入jar包,继承 Job 接口,编写需要执行的业务逻辑
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.3.2</version>
</dependency>
public class DemoJob implements Job {
@Override
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
System.out.println("我是一个定时任务执行逻辑");
}
}
2、编写定时任务执行器
public class QuartzExecutor {
//1、创建一个任务调度器(好比公交调度站)
public static Scheduler createScheduler() throws SchedulerException {
SchedulerFactory schedulerFactory = new StdSchedulerFactory();
Scheduler scheduler = schedulerFactory.getScheduler();
return scheduler;
}
//2、创建一个任务(好比某一个公交车出行)
public static JobDetail createJob(){
JobBuilder jobBuilder = JobBuilder.newJob(DemoJob.class);
jobBuilder.withIdentity("jobName","myjob");
JobDetail jobDetail = jobBuilder.build();
return jobDetail;
}
//3、创建作业任务时间出发器
public static Trigger createTrigger(){
CronTrigger cronTrigger = TriggerBuilder.newTrigger().
withIdentity("triggerName", "myTrigger").
startNow().
withSchedule(CronScheduleBuilder.cronSchedule("*/2 * * * * ?")).build();
return cronTrigger;
}
public static void main(String[] args) throws SchedulerException {
//1、创建一个任务调度器(好比公交调度站)
Scheduler scheduler = QuartzExecutor.createScheduler();
//2、创建一个任务(好比某一个公交车出行)
JobDetail job = QuartzExecutor.createJob();
//3、创建作业任务时间出发器
Trigger trigger = QuartzExecutor.createTrigger();
//4、根据任务调度器根据时间触发器执行我们的任务
scheduler.scheduleJob(job,trigger);
scheduler.start();
}
}
备注:
cron表达式有七个位置组成:
1、Second(秒) 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点半触发执行一次