gpt4 book ai didi

具有不固定延迟的Java计时器

转载 作者:搜寻专家 更新时间:2023-11-01 01:18:25 25 4
gpt4 key购买 nike

我需要一个 Timer,它基本上每 t 秒执行一次操作。但是我希望能够修改定时器重复任务的定时器周期。我写了这样的东西:

public Bot() {
timer = new Timer();
timer.schedule(new Task(), 1000, moveTime = 1000);
}

public class Task extends TimerTask {
@Override
public void run() {
System.out.println("Time Passed from last repeat:" + movetime)
moveTime += 1000;
}

因此,在 1000 毫秒的延迟之后,计时器启动并每 moveTime 毫秒重复一次。问题是,即使我将 movetime 增加 1000,计时器始终以初始延迟 (1000) 运行,但 movetime 的值每次都会增加(2000、3000、4000 等)计时器调用 run() 的时间。

我是不是遗漏了什么或者我有什么替代方案可以每“t”秒重复一次任务,“t”是可变的?

谢谢。

最佳答案

我不认为 java.util.Timer 类支持这个。

您可以做的是使用 Timer.schedule(TimerTask, int) 方法在一定时间后执行您的任务。当您的任务被执行时,您可以安排一个新的计时器,并具有您想要的新间隔。

类似于:

int moveTime = 1000;

Timer timer = new Timer();

public Bot(){
timer.schedule(new Task(), moveTime);
}

public class Task extends TimerTask {
@Override
public void run() {
System.out.println("Time Passed from last repeat:"+movetime)
moveTime += 1000;
timer.schedule(new Task(), moveTime)
}
}

关于具有不固定延迟的Java计时器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8386545/

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