[英]Java Timer.Schedule (infiniti loop) stop running
我有以下问题:我正在用Java写一个聊天机器人,我想调用一个方法,甚至x分钟。 所以我需要阅读“ Timer.Schedule”。 所以我写下面的方法:
public function timerMethod()
{
int time = 10;
...
new java.util.Timer().schedule(
new java.util.TimerTask() {
@Override
public void run() {
timerMethod();
}
}, 1000 * 60 * time // 1MSec * 1Sec * xMin
);
}
在开始时,循环工作正常,但几个小时后(我认为是在10到15个小时后),循环不再工作了……我不知道为什么我不工作,也没有收到任何错误消息:(
有人可以帮我取悦吗???
所以您想让代码运行x分钟,对吗?
如果是这样,请将您希望代码运行的时间转换为毫秒:1分钟= 60000毫秒。 有一个名为System.currentTimeMillis()的方法,它将从EPOCH日期(1970年1月1日)返回毫秒值。
您可以像这样使用while循环:
`
int msTime = 60000; //1 Minute = 60000 MS
int doUntil = ms + System.currentTimeMillis(); //1 minute
while(System.currentTimeMillis() != doUntil)
{
//Code here
System.out.println(¨Hello World¨); //This will print Ḧello World for 60000ms
}
嗯,首先,您可以停止多次实例化java.util.Timer()
变量。 您只需要一个作为类的属性。 timerTask是唯一应该在那里重新初始化的计时器。
private Timer timer = new Timer();
现在,用try / catch将代码包含在run函数中:
public void run() {
try {
timerMethod();
} catch(InterruptedException e) {
e.printStackTrace();
}
}
您只调用一次timerMethod吗? 您也可以在此代码中添加一些打印内容,以检查何时重新安排函数的时间以及何时运行方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.