我正在使用计时器在 Tomcat 服务器中运行 Cron 作业,它在启动时运行并等待我指定的分钟数。现在,我指定它每 24 小时运行一次。
web-xml 配置:
<env-entry>
<description>Minutes to Parse - 1440 minutes = 1 day</description>
<env-entry-name>Minutes</env-entry-name>
<env-entry-type>java.lang.String</env-entry-type>
<env-entry-value>1440</env-entry-value>
</env-entry>
Cron 作业配置:
private void startScheduler() {
try {
timer.schedule(new TimerTask() {
public void run() {
scheduleParse();
//timer.cancel();
}
private void scheduleParse() {
notificaciones();
System.out.println("Lo esta haciendo");
}
}, 0, this.minutes * 60 * 1000);
}
catch (Exception e) {
}
}
但我需要我的函数在每天午夜运行,顺便说一句,它每 24 小时运行一次,以部署时间为引用。例如,如果我们在今天上午 10 点部署我们的 Web 应用程序,它将在每天上午 10 点运行。
我找到了解决方案,但我想知道是否有更好的解决方案。时间间隔将是每 60 分钟...如果实际时间是上午 12 点,则将进行该过程。如果不是,则什么也不会做。
有更好的解决方案吗?
最佳答案
我想我会很想使用您的服务器环境的调度软件来触发作业,而不是尝试自己处理调度。如果您的调度程序线程因任何原因终止,您将永远不会在不重新启动应用服务器的情况下再次运行该作业。
在 Unix 上,您可以使用 cron tabe 来触发作业。 Unix 和 Windows 上都存在一系列更复杂的工具,但即使是 cron 也应该为您提供您正在寻找的那种控制。
关于java - Cron Job 每天午夜运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11938895/