gpt4 book ai didi

java - 如何安排每小时开始的任务

转载 作者:搜寻专家 更新时间:2023-10-30 20:59:45 25 4
gpt4 key购买 nike

我正在开发一项服务,该服务假定每小时开始并准确地在整点(下午 1:00、下午 2:00、下午 3:00 等)重复。

我尝试了以下操作,但它有一个问题,我第一次必须在一小时开始时准确运行程序,然后此调度程序将重复它。

ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor();
scheduler.scheduleWithFixedDelay(new MyTask(), 0, 1, TimeUnit.HOURS);

无论我何时运行程序,有任何建议重复我的任务吗?

问候,伊姆兰

最佳答案

我还建议 Quartz为了这。但是可以使用 initialDelay 参数使上面的代码在一小时开始时首先运行。

Calendar calendar = Calendar.getInstance();
ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor();
scheduler.scheduleAtFixedRate(new MyTask(), millisToNextHour(calendar), 60*60*1000, TimeUnit.MILLISECONDS);



private static long millisToNextHour(Calendar calendar) {
int minutes = calendar.get(Calendar.MINUTE);
int seconds = calendar.get(Calendar.SECOND);
int millis = calendar.get(Calendar.MILLISECOND);
int minutesToNextHour = 60 - minutes;
int secondsToNextHour = 60 - seconds;
int millisToNextHour = 1000 - millis;
return minutesToNextHour*60*1000 + secondsToNextHour*1000 + millisToNextHour;
}

关于java - 如何安排每小时开始的任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10204246/

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