# 介绍
– 在Java中实现任务调度
– 基于时间触发
—
# 概念
1. **Job(作业)**
– 表示需要执行的任务逻辑,是一个实现`org.quartz.Job`接口的类,需重写`execute()`方法
– **JobDetail**: 对Job的封装,包含Job的名称,组名,描述,持久化配置等元数据,由`JobBuiler`构建
2. **Trigger(触发器)**
– 定义Job的执行时间规则
– 核心触发器分为固定触发器(**SimpleTrigger**)与CRON表达式触发器(**CronTrigger**)
– Trigger由`TriggerBuilder`构建,包含优先级,触发时间,重复次数等属性
3. **Scheduler(调度器)**
– 核心组件,负责管理Job和Trigger的生命周期,并根据触发规则执行作业
– 常用实现类: `StdScheuler`,通过`SchedulerFactory`获取实例
4. **JobExecutionContext(作业执行上下文)**
– 传递给`Job.execute()`方法的向上问对象,包含当前调度器,触发器,作业等信息,用于获取任务运行时数据
5. **JobDataMap**
– 键值对集合,用于在Job与Trigger之间传递数据
6. **Listener(监听器)**
– 用来监听作业,触发器,调度器的生命周期
– **JobListener**: 作业监听器
– **TriggerLIstener**: 触发器监听器
– **SchedulerListener**: 调度器监听器
—
# 架构
1. **调度核心**: 管理调度逻辑,协调触发器与作业的执行
2. **作业存储**: 负责持久化调度器,触发器与作业的状态
– **RAMJobStore**: 内存存储,性能高但不持久化
– **JDBCJobStore**: 数据库存储,支持集群和持久化,需要配置数据库连接
3. **线程池**: 管理执行作业的线程,默认使用`SimpleThreadPool`
4. **触发器管理**: 解析触发器规则,计算出发时间
# 依赖
“`
“`
—
# 使用
1. 引入依赖
2. 定义Job类,实现Job接口,重写`execute()`方法
3. 根据规则,构建JobDetail与Trigger
4. 创建调度器示例,注册Job与Trigger,启动调度器