Quartz作业正在运行

时间:2009-11-06 10:17:14

标签: java unix java-ee cron quartz-scheduler

你好,我在工作时已经意识到了石英。然后一个cron被设置为每2分钟用表达式0 0/2 * * *唤醒?

当您在13:10:30运行项目时,第一个动作发生在13:12:00和第二个13:14:00,其余每2分钟0秒。显然,在项目启动和第一次行动之间,只有1:30:30。

有没有办法在第一次出现时尊重2分钟,无论项目何时开始?

2 个答案:

答案 0 :(得分:3)

使用CronTrigger类在Quartz中配置Cron作业。另一种方法是使用SimpleTrigger,您可以使用固定延迟间隔构建它。 SimpleTrigger有各种构造函数,允许您指定开始时间,结束时间,重复次数,重复间隔等。

话虽如此,我建议不要使用Quartz进行这种调度,并使用java.util.concurrent.Executors.newScheduledThreadPool()。当谈到简单的重复任务时,它比Quartz容易得多。

答案 1 :(得分:1)

Quartz可能会使用cron进行调度,这是基于日期和时间,而不是持续时间。这意味着您定义的cron表达式与计算机上的当前时间直接相关,而不是与应用程序启动时相关。

我不知道Quartz配置可以帮助您解决问题。但是,解决方案是创建自己的Thread,它在应用程序启动期间启动,并且在调用方法之前基本等待2分钟:

while (running) {
    Thread.sleep(1000 * 120);
    doStuff();
}