我有一个程序可以读取一些RSS feed,对其进行解析,然后将链接复制到其他位置。好!我想每10分钟检查一次RSS提要,以获取可能的更新。我写了这段代码:
@Override
public void run() {
while (true) {
// check feeds here
try {
Thread.sleep(600000);
} catch (InterruptedException ex) {
// exception handing
}
}
}
运行一两天后,就可以正常运行了。但是通常在3或4天后,它会进入睡眠状态,再也不会醒来!!!!因此,它不会更新RSS提要。
我该如何解决这个问题!
最佳答案
如果我不得不猜测,我会说代码中可能有一个读取提要的错误,该错误引发了未处理的异常,从而导致线程结束。对您来说,线程似乎永不唤醒,而实际上它却死了。
public void run() {
while (true) {
// check feeds here <<<---- Look for the bug here
try {
Thread.sleep(600000);
} catch (InterruptedException ex) {
// exception handing
}
}
}
Thread.sleep方法中几乎没有错误(因为它几乎在任何地方都被广泛使用)。无论如何,请调试并检查线程是否仍处于活动状态或是否已终止。