我在线程的run()方法中遇到了一个非常奇怪的异常。简单语境中的Java异常
public class project extends JApplet implements KeyListener, MouseListener, MouseMotionListener, ActionListener, Runnable {
private boolean gameStarted;
public void init() {
gameStarted = true;
new Thread(this).start();
}
public void run() {
while (true) {
if (gameStarted)
System.out.print("OK");
}
}
}
变量gameStarted为true,但系统不会打印任何结果。这是一个更大的类的一部分,它是我正在开发的游戏的基类。然而,这让我完全陷入困境,我不明白为什么这不起作用。如果不是gameStarted,我把true
放在if语句中,它确实打印出OK。
另外请注意,如果我改变的run()方法如下,它的工作原理完全如预期鉴于gameStarted是正确的:
public void run() {
while (true) {
System.out.print(gameStarted);
if (gameStarted)
System.out.print("OK");
}
}
为了尽快提供更好的帮助,请发布[SSCCE](http://sscce.org/)。 –
请邮编 – Drogba
Mark gameStarted as'volatile'? – phs