0

这是我的循环代码(这是与我的循环相关的唯一代码):

while(true)
    {
        try {
            Thread.sleep(20);
            System.out.println("1");
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }           
    }

当我启动小程序时,它会出现白屏,除非我在 Eclipse 中按下“终止”按钮,否则我无法关闭它。

4

3 回答 3

3

您正在使用无限while循环阻塞 UI 线程。您没有说您使用的是 AWT 还是 Swing 小程序,无论哪种方式结果都是一样的。如果您使用的是 Swing 小程序,请使用Swing Timer。如果您使用的是旧的重量级 AWT,请将其转换为 Swing 并遵循前面的建议。

于 2013-05-04T00:13:18.793 回答
0

如前所述,您使用以下方法制作了一个无限循环:

while(true){
//something
}

没有休息;那么除了抛出的异常之外,为什么或什么应该停止循环呢?

要查看何时抛出 InterruptedException,您应该阅读 JavaDoc: http ://docs.oracle.com/javase/7/docs/api/java/lang/InterruptedException.html

于 2013-05-04T00:12:39.887 回答
0

您正在占用小程序 EDT。您需要在另一个线程中运行循环。尝试将其添加Thread gameThread;为变量, 然后在您的小程序启动方法和小程序停止方法中使用和。
gameThread = new Thread() {
public void run() {
while (condition) {
//code here
}
}
}
gameThread.start()gameThread.join()

于 2013-05-04T00:18:59.107 回答