核心概念
Job
package org.quartz;
//Job 接口定义,开发者实现即可
public abstract interface Job{
public abstract void execute(JobExecutionContext paramJobExcutionContext)
throws JobExecutionException;
}
注解
@DisallowConcurrentExecution:不要并发地执行Job的多个实例
@PersistJobDataAfterExecution:在成功执行Job后,更新JobDetail中JobDataMap数据
JobDetail
- Job的属性,名称,描述等
- JobDataMap:定义Job特例化的属性、名称、描述等。
- Durability:可持久化
- RequestRecovery:scheduler发生硬关闭,当scheduler重启后,该job会重新执行
Trigger
Job执行的时间点
公共属性
- jobKey:trigger触发时被执行的job身份
- startTime:trigger触发器第一次检测开始时间点
- endTime:trigger失效时间点
- priority:有N个trigger需要“同时”触发,但只有Z(Z<N)个工作线程,priority最高的Z的trigger会被首先触发。默认优先级为5
- misfire:如果scheduler关闭或者Quartz线程池中没有可用线程来执行job,就会misfire错过触发,不同的trigger有不同的misfire机制
常用trigger
- SimpleTrigger:简单的时间规则
- 开始时间
- 间隔时间
- 运行次数
- CronTrigger:支持cron表达式
Calendar
package org.quartz;
public interface Calendar{
public boolean isTimeIncluded(long timeStamp);
public long getNextIncludedTime(long timeStamp);
}
timeStamp是单位为毫秒的时间戳
排除一些节假日可以使用:org.quartz.impl.HolidayCalendar方便地实现
Scheduler
任务调度器,需要把Job和Trigger注册到调度器中
三种行为:
- 启动(start)
- 暂停(stand-by)
- 停止(shutdown)
SchedulerFactory
任务调度器的工厂类,用于产生Schedule实例
JobExecutionContext
保存job运行时的信息,scheduler引用,trigger引用,jobDetail引用
如果是恢复后的job,isRecovering()返回true
本文介绍了Quartz定时任务的关键组件,包括Job、JobDetail、Trigger和Scheduler等,并详细解释了这些组件的功能及如何配置它们来实现复杂的定时任务调度。
1521

被折叠的 条评论
为什么被折叠?



