调度器创建之实例化
博主的前一篇博文主要介绍了schedule创建时的配置文件加载,下面博主将介绍一下scheduler的instantiate方法。
代码回顾
public Scheduler getScheduler() throws SchedulerException {
if (cfg == null) {
initialize();
}
SchedulerRepository schedRep = SchedulerRepository.getInstance();
Scheduler sched = schedRep.lookup(getSchedulerName());
if (sched != null) {
if (sched.isShutdown()) {
schedRep.remove(getSchedulerName());
} else {
return sched;
}
}
sched = instantiate();
return sched;
}
instantiate方法
instantiate方法很长,这里就不贴上源码了。通过查看源码可知,quartz的instantiate方法主要就是根据之前加载好的配置文件来创建出scheduler需要用到的一些对象。
主要对象
- Job,业务逻辑类需要时间的接口
- JobStore,主要用于存储Job和Trigger。
- JobFactory,job实例化工厂。
- ThreadPool,主要用于分配任务给具体的线程进行执行。
- QuartzSchedulerThread,管理者线程。
- WorkThread,工作者线程。
- DBConnectionManager,数据库连接管理器。
- ThreadExecutor,线程执行器。
- SchedulerPlugin,调度器插件。
- JobListener,任务监听器。
- Trigger,触发器
- Schedule,时间表
- TriggerListerner,触发器监听器。
- JobRunShellFactory,jobRunShell的工厂。
- JobRunShell,实现了Runnale接口,会调用对应实例化的job的execute方法。