I need a Timer
that basicaly does something every t seconds. But I want to be able to modify the timer period at which the timer repeats the task. I wrote something like this:
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;
}
So, After 1000ms delay the timer starts and repeats every moveTime
ms. The problem is even if I increased movetime
by 1000, the timer always runs at initial delay(1000) but the value of movetime
increases(2000,3000,4000 etc) each time the timer calls run()
.
Am I missing something or what alternative do I have for repeating a task every 't' second with 't' being variable?
Thanks.
I don't think that the java.util.Timer
class supports this.
Something you can do is use the Timer.schedule(TimerTask, int)
method that executes your task one after a certain amount of time. When your task gets executed, you can then scheduled a new timer with the new interval you want.
Something like:
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)
}
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With