// make sure only one scheduler instance is returned for all threads.
synchronized(tsf)
这个地方,必须这样吗,可以通过其他方式来实现啊,我感觉这里首先有潜在的易患,我认为不是非常必须的时候最好还是不用这个synchronized
一部分的代码如下:
final SimpleTrigger trigger = new SimpleTrigger(name, groupName, createFireDate(compInstance, event.getTimer()));
// make sure only one scheduler instance is returned for all threads.
synchronized(tsf) {
final Scheduler sched = tsf.getScheduler();
if (isGlobalTx()){
Runnable r = new Runnable() {
public void run() {
try {
sched.scheduleJob(jobDetail, trigger);
sched.start();
} catch (SchedulerException e) {
BPMNLogger.error(MessageCode.Timer_ScheduleJob_Fail, e, jobDetail.toString(), trigger.toString());
}
}
};
(new Thread(r)).start();
} else {
sched.scheduleJob(jobDetail, trigger);
sched.start();
}
}