首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在一定的时间间隔内执行java程序

在一定的时间间隔内执行java程序
EN

Stack Overflow用户
提问于 2019-08-09 22:27:55
回答 3查看 319关注 0票数 0

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

文章difference in seconds between two dates using joda time?解释了如何获得两个预定义日期之间的秒数差,但我总是想计算下一个工作日上午9点和当前时间之间的差值。

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

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

下面是我使用的伪代码

getNextDayEpoch函数包含if/else代码,用于使用Determine if date is weekday/weekend java确定是工作日还是周末

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

代码语言:javascript
复制
currentEpoch = getCurrentEpoch()
nextDayEpoch = getNextDayEpoch()

difference = nextDayEpoch - currentDayEpoch

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

你能建议一些更好的方法吗?

EN

Stack Overflow用户

发布于 2019-08-09 22:46:58

如果您当前在项目中使用spring,可以尝试使用带cron参数的@Scheduled批注

代码语言:javascript
复制
@Scheduled(cron = "0 0 1 * * ?")
public void doThing() {
//...
}

请参阅https://spring.io/guides/gs/scheduling-tasks/

票数 0
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57432153

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档