gpt4 book ai didi

java - 在特定时间运行java线程

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:12:53 26 4
gpt4 key购买 nike

我有一个 Web 应用程序,它每小时与中央数据库同步四次。该过程通常需要 2 分钟。我想在 X:55、X:10、X:25 和 X:40 作为线程运行此进程,以便用户知道在 X:00、X:15、X:30 和 X:45他们有一个干净的数据库副本。这只是关于管理期望。我已经在 java.util.concurrent 中检查了执行程序,但是调度是使用 scheduleAtFixedRate 完成的,我认为这不能保证实际运行的时间小时。我可以使用第一个延迟来启动 Runnable,以便第一个接近启动时间和每 15 分钟安排一次,但看起来这可能会在时间上有所不同。是否有更简单的方法来安排线程在每刻钟前 5 分钟运行?

最佳答案

您可以让 Runnable 安排它的“下一次运行”。

比如,

class Task implements Runnable {
private final ScheduledExecutorService service;

public Task(ScheduledExecutorService service){
this.service = service;
}

public void run(){
try{
//do stuff
}finally{
//Prevent this task from stalling due to RuntimeExceptions.
long untilNextInvocation = //calculate how many ms to next launch
service.schedule(new Task(service),untilNextInvocation,TimeUnit.MILLISECONDS);
}
}
}

关于java - 在特定时间运行java线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2437141/

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