如何将时间表更改为每天的某个时间而不是每隔 X 次

How to change schedule to a certain time every day insted of every X time

我正在尝试让任务每天早上 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 次任务。

提前致谢。

我最后做的是每隔一小时执行一次该程序,并提出一个小时和 select 我想要的小时的问题,我知道这不是最好的方法,但我需要快速完成它。 ...

    Calendar cal = Calendar.getInstance(); 
    int hour = cal.get(Calendar.HOUR_OF_DAY);
    if(hour == DesiredHour){
    //do stuff
    }else if(hour == DesiredHour2){
    //do stuff 2
    }

感谢评论。

这是我想出的一种 hack 解决方案,但请根据您的要求随意提供 comments/feedback。

基本上,根据我的理解,您有一个 Java 程序,它会在计算机启动(如果重新启动)时自动 运行,然后每小时检查一次是否是运行 应用程序的正确时间。为什么不以这种方式保持 运行ning,而不是每小时 运行ning,计算到达下一个所需时间所需的时间(例如,第二天晚上 8 点)。

例如,假设您在 3:15PM 重新启动它。当java程序运行s时,get它获取当前时间(System.currentTimeMil...),然后计算到达8PM所需的时间。您可以对此做一些简单的数学运算(例如 20 - 当前时间 = 等待时间)如果它是负数,只需将 24 添加到它(例如,如果它是 20 - 23,答案是 24 - 3 = 21,因此在下一个晚上 8 点等待 21 小时)。

每次 运行 代码或启动时都可以使用此过程。我建议只创建一个简单的函数来计算所需的睡眠时间。