石英工作调教
问题描述:
你好我在石英工作时已经实现了一些东西。一个cron设置为每2min醒来时用表达式0 0/2 * * *
? 。石英工作调教
当你在13:10:30运行项目时,第一个动作发生在13:12:00和第二个13:14:00,其余的每2分钟0秒。显然,在项目启动和首次发生行动之间,只有1毫秒:30秒。
无论项目在什么时间开始,有没有办法让第一次出现尊重2分钟?
答
Cron作业在石英配置为使用CronTrigger
类。另一种方法是使用SimpleTrigger
,您可以使用固定的延迟时间间隔来构建它。 SimpleTrigger
有各种构造函数,允许您指定开始时间,结束时间,重复次数,重复间隔等。如此说,我建议不要使用Quartz进行这种调度,并使用java.util.concurrent.Executors.newScheduledThreadPool()
。当谈到简单的重复任务时,它比Quartz容易得多。
答
石英可能使用cron进行调度,它基于日期和时间,而不是持续时间。这意味着您定义的cron表达式与机器上的当前时间直接相关,而不是应用程序启动时的时间。
我不知道Quartz配置会帮助你解决你的问题。然而,一个解决方案是创建你自己的Thread
,其推出的应用程序的过程开始,基本上等待2分钟调用方法之前:
while (running) {
Thread.sleep(1000 * 120);
doStuff();
}
你刚刚给我一个主意的人!谢谢,但我会多挖一点,以正确地做到这一点。 – 2009-11-06 10:54:27
石英不是基于cron的。它支持语法,但不需要它。 – skaffman 2009-11-06 11:04:05
编辑以反映这一点。 – romaintaz 2009-11-06 11:06:04