Quartz是要做定时任务的调度,设置好触发的时间规则,以及相应的任务(Job)即可
导入依赖
定义Job
import org.quartz.*;
import java.util.Date;
//job任务
public class HelloJob implements Job {
@Override
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
JobDetail jobDetail = jobExecutionContext.getJobDetail();
JobKey key = jobDetail.getKey();
String name = key.getName();
String group = key.getGroup();
System.out.println(name + ":" + group);
System.out.println("hello job exec:" + new Date());
System.out.println("---------------------");
}
}
测试
import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;
import java.util.GregorianCalendar;
public class HelloQuartz {
public static void main(String[] args) throws SchedulerException {
//quartz API
//1.调度器Scheduler
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
//2.触发器;描述规则
SimpleTrigger trigger = TriggerBuilder.newTrigger().withIdentity("trigger1", "group1")
.startNow()
//详细的响应规则
.withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(2).withRepeatCount(10))
.endAt(new GregorianCalendar(2022, 3, 20, 11, 25, 30).getTime())
.build();
//3.JobDetail
JobDetail jobDetail = JobBuilder.newJob(HelloJob.class).withIdentity("job1", "group1").build();
//4.将JobDetail和触发器增加到调度器中
scheduler.scheduleJob(jobDetail, trigger);
//5.启动,调度器开始工作
scheduler.start();
}
}
运行结果
可以使用配置文件,自定义配置规则
触发器CronTrigger
用这个可以在线练习测试cron表达式
quartz/Cron/Crontab表达式在线生成工具-BeJSON.com
import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;
import java.util.GregorianCalendar;
public class CronQuartz {
public static void main(String[] args) throws SchedulerException {
//quartz API
//1.调度器Scheduler
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
//2.触发器;描述规则
CronTrigger trigger = TriggerBuilder.newTrigger().withIdentity("trigger1", "group1")
//详细的响应规则
.withSchedule(CronScheduleBuilder.cronSchedule("*/2 * * 22 2 ?"))
.build();
//3.JobDetail
JobDetail jobDetail = JobBuilder.newJob(HelloJob.class).withIdentity("job1", "group1").build();
//4.将JobDetail和触发器增加到调度器中
scheduler.scheduleJob(jobDetail, trigger);
//5.启动,调度器开始工作
scheduler.start();
}
}