石英工作调教

问题描述:

你好我在石英工作时已经实现了一些东西。一个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(); 
} 
+0

你刚刚给我一个主意的人!谢谢,但我会多挖一点,以正确地做到这一点。 – 2009-11-06 10:54:27

+0

石英不是基于cron的。它支持语法,但不需要它。 – skaffman 2009-11-06 11:04:05

+0

编辑以反映这一点。 – romaintaz 2009-11-06 11:06:04