初识:一旦一个scheduler被实例化了,它就可以被start,进入运行状态,也可以被shutdown。这也是一个scheduler的生命周期(从被实例化到被shutdown)。这里需要注意,一旦scheduler被shutdown,就不能再重新start了,想要重新start,必须重新实例化。
一个scheduler被实例化之后,就可以添加、移除Job、Trigger甚至暂停一个Trigger等。但是,只有在start之后,Trigger才可以生效(come into play)。
主要接口:
Job接口:
public interface Job { void execute(JobExecutionContext context) throws JobExecutionException; }
我们写自己的job时需要实现的接口。
JobExecutionVontext参数携带的信息:scheduler的引用、trigger的引用、JobDetail对象以及其他一些信息。
JobDetail接口:
在scheduler添加job时创建,它包含了Job的一些信息,以及一个JobDataMap,JobDataMap存储了job的成员变量。
Trigger接口:
触发Job时需要,通过trigger可以使得job执行,Quartz自带了几种不同的触发方式,但是常用的是SimpleTrigger以及CronTrigger。
SimpleTrigger适用于在给定的时间只执行一次或者重复执行N次或者延迟T执行。
CronTrigger更适用于与日历相关的,比如每周一的上午十点执行。
在Quartz中,我们称JobDetail为 “JobDetail实例” 或 “Job的定义”,称Job为 “Job实例” 或 “Job定义的实例”