完全由Java开发,可以用来执行定时任务,类似于java.util.Timer。相较于Timer, Quartz增加了很多功能:1、持久性作业 - 就是保持调度定时的状态。2、作业管理 - 对调度作业进行有效的管理。
一、Quartz API核心接口有:
- Scheduler – 与scheduler交互的主要API;
- Job – 你通过scheduler执行任务,你的任务类需要实现的接口;
- JobDetail – 定义Job的实例;
- Trigger – 触发Job的执行;
- JobBuilder – 定义和创建JobDetail实例的接口;
- TriggerBuilder – 定义和创建Trigger实例的接口;
二、Job 和 Trigger
public interface Job {
public void execute(JobExecutionContext context)throws JobExecutionException;
}
(1)job的execute(context)方法被scheduler的一个工作线程调用。
(2) Job和Trigger的区别:
很多任务调度器并不区分 Job 和 Trigger。
Quartz做了区分,简单的说就是把触发条件和执行任务区分开来。这种做法使得Job可以独立于Trigger之外存储在scheduler中。当然,多个触发器也可以被绑定到一个Job。当一个Trigger过期之后,可以重新复用和这个Trigger绑定的Job。
(3)JobDetail:
JobDetail对象是在被添加到调度器的时候被Quartz客户端(也就是你的程序)创建的。用来存储一个 Job的状态信息。
public interface JobDetail {
JobKey getKey();