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

我需要一个基本上每t秒做一次的Timer 。 但我希望能够修改计时器重复任务的计时器周期。 我写了这样的话:

 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; } 

因此,在1000ms延迟后,定时器启动并重复每个moveTime ms。 问题是即使我将移动时间增加了1000,计时器总是以初始延迟(1000)运行,但每次定时器调用run()时,移动时间的值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) } }