你好,我在工作时已经意识到了石英。然后一个cron被设置为每2分钟用表达式0 0/2 * * *
唤醒?
当您在13:10:30运行项目时,第一个动作发生在13:12:00和第二个13:14:00,其余每2分钟0秒。显然,在项目启动和第一次行动之间,只有1:30:30。
有没有办法在第一次出现时尊重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();
}