您的位置:首页 > 其它

quartz源码分析

2016-11-06 16:38 183 查看
Package quartz-core

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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: