我试图让任务每天早上 8 点执行(示例)。
目前我所做的是创建一个任务,自动执行它,但只执行一段时间(在本例中为 50 秒),我希望它每天早上 8 点执行。
我当前的代码:
Timer time = new Timer();
certif_envia_notificacion st = new certif_envia_notificacion();
time.schedule(st, 0, 50000);
其中 certif_envia_notificacion 是我想要执行的任务,它每 50 秒执行一次。
目前我能解决这个问题的唯一方法是在任务 certif_envia_notificacion 中询问时间并在上午 8 点执行,但这似乎是对服务器资源的巨大浪费,因为我必须至少执行该任务 24 次日。
提前致谢。
最佳答案
这是我想到的一种黑客解决方案,但请随意根据您的要求提供评论/反馈。
基本上,根据我的理解,您有一个 Java 程序,它会在计算机启动(如果重新启动)时自动运行,然后每小时检查一次,看看是否是运行该应用程序的正确时间。为什么不保持这种方式运行,而是计算到达下一个所需时间(例如第二天晚上 8 点)所需的时间,而不是每小时运行一次。例如,假设您在下午 3:15 重新启动它。 java程序运行时,获取当前时间(System.currentTimeMil...)然后计算到达晚上8点需要的时间。您可以对此进行一些简单的数学计算(例如,20 - 当前时间 = 需要等待的时间),如果为负数,只需将 24 添加到(例如,如果是 20 - 23,则答案为 24 - 3 = 21,因此等待下一个晚上 8 点 21 小时)。
每次运行代码或启动时都可以使用此过程。我建议只创建一个简单的函数来计算所需的 sleep 时间。
关于java - 如何将日程安排更改为每天的某个时间而不是每隔 X 时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32379886/