所以我今天脑子里有了个主意...我想听听一些反馈。我有一个Java应用程序,它需要每5分钟检查一次目录。简单而简单的应用程序需要每五分钟运行一次。

似乎很适合作为cronjob的候选人,但是我在想...为什么不像这样将逻辑/定时保留在应用程序中(显然简化了):

public static void main(String[] args) {
    while(true) { // repeatedly execute...
        // do the work/job
        Thread.sleep(600 * 1000); // make the thread sleep for 5 minutes
    }
}

我看到的一个重要缺点是“启动后如何停止该应用程序?将其删除?

除了那个之外,还有其他重要的缺点吗?

我应该停止做白日梦,而只使用cron作业吗?

最佳答案

许多重大缺点:

  • 如果您想更改轮询频率(即每2分钟或每10分钟更改一次),则必须更改程序。如果您有不定期的轮询计划,则这尤其困难,例如星期一至星期五每5分钟一次,而星期六和星期日每15分钟一次。当然,您认为您的程序不需要这样做,但是需求会不断变化。
  • 正如您所说,杀死进程是停止程序的唯一方法。而且在中间过程中将其杀死可能是一件坏事。您当然可以添加一些取消逻辑,但这是额外的开发时间。
  • 该程序正坐在那里,却无所事事(大部分时间)。这是浪费资源。当您使用具有许多GB内存的系统时,这可能不是什么大问题,但是当您使用内存有限的嵌入式系统时,这将成为一个问题。
  • 您正在浪费时间编写自己的调度程序,而当操作系统中已经内置了一个非常好的调度程序时,您必须对其进行调试和维护。

  • 我将此程序称为“绑架程序”,因为它的行为就像猫一样:它大部分时间都在 sleep ,不时醒来以拉伸(stretch),也许还需要敲打绳子几分钟,然后再进入休眠状态。 Programs are not cats

    10-08 04:02