java - 在一定的时间间隔内执行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();
}
你能建议任何更好的方法吗?
解决方案
也许你想了解Scheduling ScheduledExecutorService 你也可以看看Quartz-Framwork
我会为此拿石英。
推荐阅读
- node.js - (Mocha/Chai/Node.js) 为什么即使有错误也能通过测试?
- amazon-web-services - 如何使用 ResourceGroupsTaggingAPI boto3 列出 AWS 标记的托管区域
- python - 从大型 .tgz 文件中提取 .wav 文件并将它们存储到数组中以进行分类
- for-loop - 了解 Lua 中的“for”循环所需的更多细节
- symfony - 将文件中的函数导入 Symfony 中的类控制器的问题
- postgresql - 在一张表中使用分区和继承
- php - SendGrid 不发送电子邮件并返回 0 数组( [0] => )
- java - 无法使用 BubbleTextView
- javascript - 如何查看 select2 实例的设置选项?
- scala - Scala隐式转换误导