4

我需要一个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”是可变的?

谢谢。

4

1 回答 1

12

我不认为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)
    }
}
于 2011-12-05T14:15:11.063 回答