Java 关于quartz scheduler,需要澄清
关于石英的几个独立问题Java 关于quartz scheduler,需要澄清,java,scheduled-tasks,scheduling,quartz-scheduler,Java,Scheduled Tasks,Scheduling,Quartz Scheduler,关于石英的几个独立问题 如果我希望事件执行一次,那么 trigger.setRepeatCount(0); 考虑到这个片段。事件在计划时间为“现在之前”时运行,在计划时间为将来时无法执行 JobDetail job = new JobDetail(); job.setName(eventType.toString() + " event"); job.setJobClass(Action.class); SimpleTrigger trigger = new SimpleTrigger()
trigger.setRepeatCount(0);
JobDetail job = new JobDetail();
job.setName(eventType.toString() + " event");
job.setJobClass(Action.class);
SimpleTrigger trigger = new SimpleTrigger();
trigger.setStartTime(new Date(momentInTime.inMillis()));
trigger.setName("trigger");
trigger.setRepeatInterval(repeatFrequency.inMillis());
trigger.setRepeatCount(SimpleTrigger.REPEAT_INDEFINITELY);
scheduleManager.getScheduler().scheduleJob(job, trigger);
Time now : 1352410780356
Will execute at : 1352410840356 // 1 min interval
Execution starts : 1352410840368
现在与计划执行的时间差正好是1分钟
好的。。尝试更大的间隔
Time now : 1352411061156
Will execute at : 1352411301156 // 3 min interval
Execution starts : 1352411301165
再一次。。差别正好是3分钟,如图所示
执行应及时进行
new MomentInTime(new DayOfMonth(8), new HourOfDay(15), new MinuteOfHour(48));
它实际上是以当前时间和请求时间之间的偏移量(甚至偏移量)开始的(我应该说,似乎是开始的)
看起来,如果是10:43:25
,我想要一个作业在10:45:00
开始,它会计算出两个偶数分钟的差异,并将作业安排在10:45:25
这是什么原因造成的?
同时,
public MomentInTime(DayOfMonth day, HourOfDay hour, MinuteOfHour min) {
calendarInstance = Calendar.getInstance();
// Get current year and month
int year = calendarInstance.get(Calendar.YEAR);
int month = calendarInstance.get(Calendar.MONTH);
calendarInstance.set(year, month, day.getValue(), hour.getValue(), min.getValue());
System.out.println("Time now : " + System.currentTimeMillis());
System.out.println("Will execute at: " + calendarInstance.getTimeInMillis());
}
public long inMillis() {
return calendarInstance.getTimeInMillis();
}
一行修复
calendarInstance.set(Calendar.MILLISECOND, 0);
完成了