具有非固定延迟的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) } }