quartz源码分析
2016-11-06 16:38
183 查看
Package quartz-core
org.quartz.QuartzScheduler.java
类 QuartzScheduler
方法:
1. 构造函数
2. initialize()
3. start()
所有未被触发的trigger会传给一个triggerlistener
4. startDelayed()
5. standby()
暂停
其中,
6. shundown()
7. scheduleJob()
把job加到scheduler中,并关联相应的trigger。
org.quartz.QuartzScheduler.java
类 QuartzScheduler
方法:
1. 构造函数
public QuartzScheduler(QuartzSchedulerResources resources, long idleWaitTime, @Deprecated long dbRetryInterval)
schedThreadExecutor.execute(this.schedThread);
addInternalJobListener(jobMgr);
2. initialize()
bind(); 把scheduler绑定到一个RMI registry
registerJMX(); 把scheduler绑定到JMSServer
3. start()
所有未被触发的trigger会传给一个triggerlistener
notifySchedulerListenersStarting();
notifySchedulerListenersStarted();
4. startDelayed()
public void startDelayed(final int seconds) throws SchedulerException { if (shuttingDown || closed) { throw new SchedulerException( "The Scheduler cannot be restarted after shutdown() has been called."); } Thread t = new Thread(new Runnable() { public void run() { try { Thread.sleep(seconds * 1000L); } catch(InterruptedException ignore) {} try { start(); } catch(SchedulerException se) { getLog().error("Unable to start secheduler after startup delay.", se); } } }); t.start(); }
5. standby()
暂停
resources.getJobStore().schedulerPaused(); schedThread.togglePause(true); getLog().info( "Scheduler " + resources.getUniqueIdentifier() + " paused."); notifySchedulerListenersInStandbyMode();
其中,
public boolean isInStandbyMode() { return schedThread.isPaused(); }
6. shundown()
public void shutdown(boolean waitForJobsToComplete) {
standby(); schedThread.halt(waitForJobsToComplete); notifySchedulerListenersShuttingdown();
resources.getThreadPool().shutdown(waitForJobsToComplete);
7. scheduleJob()
把job加到scheduler中,并关联相应的trigger。
public Date scheduleJob(JobDetail jobDetail, Trigger trigger) throws SchedulerException
OperableTrigger trig = (OperableTrigger)trigger; if (trigger.getJobKey() == null) { trig.setJobKey(jobDetail.getKey()); } else if (!trigger.getJobKey().equals(jobDetail.getKey())) { throw new SchedulerException( "Trigger does not reference given job!"); } trig.validate();
resources.getJobStore().storeJobAndTrigger(jobDetail, trig); notifySchedulerListenersJobAdded(jobDetail); notifySchedulerThread(trigger.getNextFireTime().getTime()); notifySchedulerListenersSchduled(trigger);
相关文章推荐
- quartz集群调度机制调研及源码分析---转载
- Quartz源码分析之HelloWorld示例
- spring Quartz 源码分析--触发器类CronTriggerBean源码剖析
- quartz2.x源码分析——启动过程
- Quartzs的 job,trigger 存储、job,trigger 删除源码分析
- Quartz源码分析(一)------ 以线程等待的方式实现按时间调度
- Quartzs的job,trriger监听器源码分析
- quartz集群调度机制调研及源码分析---转载
- quartz集群调度机制调研及源码分析
- quartz源码分析之深刻理解job,sheduler,calendar,trigger及listener之间的关系
- quartz源码分析——执行引擎和线程模型
- Quartz源码——QuartzSchedulerThread.run() 源码分析(三)
- quartz集群调度机制调研及源码分析
- Quartz源码分析之Trigger
- quartz - 集群调度机制调研及源码分析
- Quartz源码分析之Job
- quartz集群调度机制调研及源码分析---转载
- quartz源码分析——执行引擎和线程模型
- Quartz源码——JobStore保存JonDetail和Trigger源码分析(一)
- Quartz源码分析(二)