文章目录
一、quartz介绍
Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,是完全由java开发的一个开源的任务日程管理系统,“任务进度管理器”就是一个在预先确定(被纳入日程)的时间到达时,负责执行(或者通知)其他软件组件的系统。
Quartz用一个小Java库发布文件(.jar文件),这个库文件包含了所有Quartz核心功能。这些功能的主要接口(API)是Scheduler接口。它提供了简单的操作,例如:将任务纳入日程或者从日程中取消,开始/停止/暂停日程进度。
二、核心概念
Quartz 任务调度的核心元素是 scheduler, trigger 和 job,其中 trigger 和 job 是任务调度的元数据, scheduler 是实际执行调度的控制器。
1、trigger
触发器,用于定于任务调度的时间规则,即按照什么时间规则去执行任务。Quartz 中主要提供了四种类型的 trigger:SimpleTrigger,CronTirgger,DateIntervalTrigger,和 NthIncludedDayTrigger。Trigger也有一个相关联的JobDataMap,用于给Job传递一些触发相关的参数。
最常用的:
SimpleTrigger:用来触发只需执行一次或者在给定时间触发并且重复N次且每次执行延迟一定时间的任务。
CronTrigger:按照日历触发,例如“每个周五”,每个月10日中午或者10:15分。
2、job
被调度的任务,主要有两种类型的 job:无状态的(stateless)和有状态的(stateful)。
- Quartz无状态Job实现了org.quartz.Job接口,有状态Job实现了org.quartz.StatefulJob接口。
- 对于同一个 trigger 来说,有状态的 job 不能被并行执行,只有上一次触发的任务被执行完之后,才能触发下一次执行。
- 一个 job 可以被多个 trigger 关联,但是一个 trigger 只能关联一个 job。
3、scheduler
任务调度器,由 scheduler 工厂创建:DirectSchedulerFactory