我有以下代码:
public void post(String message) {
final String mess = message;
(new Thread() {
public void run() {
while (true) {
try {
if (status.equals("serviceResolved")) {
output.println(mess);
Game.log.fine("The following message was successfully sent: " + mess);
break;
} else {
try {Thread.sleep(1000);} catch (InterruptedException ie) {}
}
} catch (NullPointerException e) {
try {Thread.sleep(1000);} catch (InterruptedException ie) {}
}
}
}
}).start();
}在我的日志文件中,我发现有很多这样的行:
The following message was successfully sent: blablabla
The following message was successfully sent: blablabla
The following message was successfully sent: blablabla
The following message was successfully sent: blablabla我的程序没有响应。
在我看来,break命令不起作用。可能的原因是什么?
有趣的是,这种情况并不总是发生。有时我的程序运行得很好,有时会出现上述问题。
发布于 2010-04-19 21:03:40
每次调用post方法时,都会启动一个新线程。我认为这个方法是可以的,但是调用者程序不是这样的。
发布于 2010-04-19 20:57:53
这行代码会不会成功:
output.println(mess);但是这一行抛出了一个空指针异常:
Game.log.fine(...在这种情况下,您将在控制台上看到输出,但从未到达break语句。Game.log可能是空的吗?
发布于 2010-04-19 21:04:52
Game.log.fine到底是做什么的?这可能是因为它在输出之后抛出了一个NullPtrException,还是因为您多次调用了post方法?
删除NullPointerException的捕获,这是不好的风格(出现NullPointerException总是一个编程错误),并在方法中添加更多的日志消息(或者使用调试器)。
https://stackoverflow.com/questions/2667499
复制相似问题