gpt4 book ai didi

java - 如何定期执行任务,但在某种程度上,直到最后一个步骤完成后才能开始步骤

转载 作者:太空宇宙 更新时间:2023-11-04 09:46:55 25 4
gpt4 key购买 nike

我有一个基于代理的模型,需要每 t 毫秒更新一次。在每个更新步骤中,所有代理对象都需要得到通知并执行一些代码。我希望每一步都持续 t 或直到最后一步完成,无论哪个时间更长。

我该怎么做?我正在尝试使用 Timer.schedule,但它似乎没有等待,因为我收到了 ConcurrentModificationException。

public void startClock(long delay) {

Timer timer = new Timer("clock", true);
TimerTask clockTask = new TimerTask() {

@Override
public void run() {
World.INSTANCE.update(); //this updates all agents
step++;
for (Timed task : listeners) {
task.run();
}
}
};
timer.schedule(clockTask, delay, interval); //miliseconds
}

public void startClock() {
startClock(interval);
}

最佳答案

看看ScheduledExecutorService#scheduleAtFixedRate() 。它将每隔 t 毫秒执行您的任务,或者如果花费的时间超过 t,则在上次执行后立即执行您的任务。

关于java - 如何定期执行任务,但在某种程度上,直到最后一个步骤完成后才能开始步骤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55310126/

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