首页 > 解决方案 > 在一定的时间间隔内执行java程序

问题描述

我有一个要求,我只需要在工作日的上午 9 点到下午 5 点之间运行 Java 程序。时区将始终为 UTC。该程序应在上午 9 点准确开始,并应在下午 5 点之前结束。如果它不能在下午 5 点之前完成,那么它应该睡到第二天 08:59:59。如果第二天是周末,那么它应该从星期一开始。

使用joda时间的两个日期之间的文章秒数差异?解释了如何获得两个预定义日期之间的秒数差异,但我总是想计算下一个工作日上午 9 点和当前时间之间的差异。

我正在考虑通过计算两个日期之间的时间差来使用 Thread.sleep() 。是否有一个 Joda Time api 可以用来计算两个日期之间的时差?

如果是工作日,我已经尝试获取当前纪元和第二天上午 9 点的纪元,计算这两个纪元之间的差异并将该值用于 Thread.sleep ,但这有点混乱。

下面是我使用的伪代码

getNextDayEpoch 函数包含 if/else 代码来确定是工作日还是周末,使用确定日期是否是工作日/周末 java

根据是工作日还是周末,我得到相应的纪元值。

currentEpoch = getCurrentEpoch()
nextDayEpoch = getNextDayEpoch()

difference = nextDayEpoch - currentDayEpoch

try {
    Thread.sleep(difference);
} catch (InterruptedException e) {
    e.printStackTrace();
}

你能建议任何更好的方法吗?

标签: javajodatime

解决方案


也许你想了解Scheduling ScheduledExecutorService 你也可以看看Quartz-Framwork

我会为此拿石英。


推荐阅读