Basic
调度器:Scheduler
你什么时候去做?
任务:JobDetail
你什么时候需要去做什么事?
触发器:Trigger
,包括:SimpleTrigger
和CronTrigger
Quartz API的关键接口是:
Scheduler - 与调度程序交互的主要API。
Job - 由希望由调度程序执行的组件实现的接口。
JobDetail - 用于定义作业的实例。
Trigger(即触发器) - 定义执行给定作业的计划的组件。
JobBuilder - 用于定义/构建JobDetail实例,用于定义作业的实例。
TriggerBuilder - 用于定义/构建触发器实例。
引包
Running with Spring Boot v2.3.7.RELEASE, Spring v5.2.12.RELEASE
Scheduler meta-data: Quartz Scheduler (v2.3.2)
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-quartz</artifactId>
</dependency>
一般操作
@DisallowConcurrentExecution
不能并发执行同一个Job Definition(由JobDetail定义)
可以同时执行多个不同的JobDetail
任务
@DisallowConcurrentExecution // 不允许并发执行, 注:并发时会等待后再执行
public class PrintWordsJob implements Job {
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
String printTime = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss").format(new Date());
System.out.println("===============");
JobDetail jobDetail = context.getJobDetail();
System.out.println("group=" + jobDetail.getKey().getGroup() + ", name=" + jobDetail.getKey().getName() + ", :" + printTime);
}
}