在java中重启计时器 [英] restart timer in java
本文介绍了在java中重启计时器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想做一个计时器,当事情发生时它会重新启动:
I would like to do a timer, it will be restarted when something happens:
public static Timer timer;
public myTimer(long MAC, String ipAddress){
timer = new Timer();
timer.schedule(timerTask, 120000);
}
public void update(){
timer.cancel();
timer = new Timer();
timer.schedule(timerTask, 120000);
}
我在创建新计划时遇到问题,我有这样的错误:
I have a problem when I create the new schedule, I have this error:
java.lang.IllegalStateException: Task already scheduled or cancelled
at java.util.Timer.sched(Timer.java:358)
at java.util.Timer.schedule(Timer.java:170)
at spb.keepAliveTimer.update(keepAliveTimer.java:37)
at spb.keepAlive.update(keepAlive.java:58)
at spb.receptor.keepAlive(receptor.java:475)
at spb.receptor.run(receptor.java:118)
at java.lang.Thread.run(Thread.java:662)
我不知道怎么办!谢谢!
I don't know how can I do it! Thanks!
推荐答案
这对我来说很好...你能粘贴完整的代码和错误吗?
This works fine for me... can you paste the full code and error?
package snippet;
import java.util.Timer;
import java.util.TimerTask;
public class Main {
public static Timer timer;
public static void main(String[] args) {
Main main = new Main();
main.myTimer(123, "127.0.0.1");
}
public void myTimer(final long MAC, final String ipAddress) {
TimerTask timerTask = new TimerTask() {
@Override
public void run() {
System.out.println("MAC: " + MAC + "ipAddress:" + ipAddress);
update();
}
};
timer = new Timer();
timer.schedule(timerTask, 1000);
}
public void update() {
TimerTask timerTask = new TimerTask() {
@Override
public void run() {
System.out.println("Updated timer");
}
};
timer.cancel();
timer = new Timer();
timer.schedule(timerTask, 2000);
}
}
此输出:
MAC: 123ipAddress:127.0.0.1
Updated timer
这篇关于在java中重启计时器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文