gpt4 book ai didi

java - 检查自上次检查以来是否已经过去了具有匹配单位的时间

转载 作者:行者123 更新时间:2023-12-01 18:48:23 24 4
gpt4 key购买 nike

我有一个系统需要以一定的时间间隔触发

如果给出以下内容:

minutes:25, seconds:10

然后,它应该在每小时 25 分 10 秒触发。例如,7:25:10、8:25:10、9:25:10 等等。

这很简单,而且我已经让该代码可以工作了。问题是它只有在系统每秒至少检查一次时才有效,否则会错过触发。

那么如何检查自上次检查以来触发单位是否与当前时间单位匹配?检查之间的时间会有很大差异。

触发单元的存储方式如下:

// units that must match the current time <Calendar Unit, Trigger>
private Map<Integer, Integer> triggerUnits;

最佳答案

首先移动到枚举而不是映射。枚举可以包含小时、秒、日等。好消息是,这样的枚举已经存在于 JDK 中,称为 TimeUnit。该枚举的每个成员都知道将时间转换为其他单位。

因此,解析字符串hour:5。将 5 小时转换为 3600*5*1000 毫秒。该值将在您的系统中使用。您有多种可能性,但我建议您从 java.util.Timer 开始。每个任务都可以在计时器中安排。它使用一个线程来执行所有任务。

如果您愿意,可以使用 Executors 框架:

ScheduledExecutorService service = Executors.newSingleThreadScheduledExecutor();
service.schedule(...);

这里的schedule方法直接使用时间单位。您甚至不必从一种单位翻译成另一种单位。

关于java - 检查自上次检查以来是否已经过去了具有匹配单位的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16706033/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com