【问题标题】:how to automatically run a java program every day at midnight when time changes from PM to Am当时间从下午变为上午时,如何在每天午夜自动运行java程序
【发布时间】:2015-03-20 20:29:33
【问题描述】:

我想在每天午夜运行我的程序,当时间在两个日期之间从上午变为下午时,例如(从今天的日期,即 22/01/2015 到 25/01/2015)。

【问题讨论】:

标签: java timer scheduled-tasks quartz-scheduler


【解决方案1】:

有很多方法可以做到这一点

  • ScheduledExecutorService,在内置的 Java 类中你可以使用它,它会在指定的时间安排作业
  • Quartz FW 是用于大规模调度的第 3 方 API
  • Cron 作业,在 linux 和 windows 批处理文件中你可以这样做
  • Autosys,作业调度程序

【讨论】:

  • 最好使用 CRON 和 java 的组合,而不是只使用 ScheduledExecutorService,因为即使您不执行作业,java 后台线程也肯定会运行。因此,如果您使用 Linux,请编写您的代码,构建一个 jar 并使用 CRON 安排它
【解决方案2】:

根据其他人的建议,如果可以,请使用 ScheduledExecutorService。

如果没有,请启动一个线程(RunnableThread)来运行您的方法 m(它检查日期和时间,如果时间从上午更改为下午,则执行必要的操作)。睡几分钟,醒来,运行 m,……让进程永远循环(或者只要你想)。如果你能睡到所需的确切时间,那就更好了,这样当线程唤醒时,你就知道从上午到下午的转换。例如,您的程序在上午 10:00 开始,那么您可以计算从现在起 2 小时(120 分钟)后将是下午。所以,只睡120分钟。醒来并做上午到下午的活动,然后睡 24 小时。

【讨论】:

    【解决方案3】:

    我非常推荐一个 CRON 作业,因为它是可靠的,并且内置在大多数 Linux 环境中,如果你在其中运行它的话。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-10-02
      • 2016-01-13
      • 1970-01-01
      • 2015-09-17
      • 2019-05-12
      • 1970-01-01
      • 2016-08-24
      相关资源
      最近更新 更多