While循环,使小程序的白色屏幕,反应迟钝
问题描述:
这里是我的循环代码(这是与我的循环的唯一代码):While循环,使小程序的白色屏幕,反应迟钝
while(true)
{
try {
Thread.sleep(20);
System.out.println("1");
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
当我启动的小程序,它的白色屏幕和我不能关闭它,除非我在eclipse中按下“终止”按钮。
答
至于说你发一个带无边循环:
while(true){
//something
}
没有突破;那么为什么或什么应该停止除了抛出异常之外的循环?
时看到一个InterruptedException异常被抛出,你应该读的JavaDoc: http://docs.oracle.com/javase/7/docs/api/java/lang/InterruptedException.html
答
你有一个无限循环while
阻塞UI线程。你不会说你是使用AWT还是Swing applet,无论哪种方式,结果都是一样的。如果您使用的是Swing小程序,请使用Swing Timer。如果您使用的是旧的重量级AWT,请将其转换为Swing,然后按照以前的建议进行操作。
答
您正在占用小应用程序EDT。你需要在另一个线程中运行你的循环。尝试添加Thread gameThread;
作为变量并使用gameThread = new Thread() {
然后
public void run() {
while (condition) {
//code here
}
}
}gameThread.start()
都在您的小程序开始方法和gameThread.join()
在您的小程序停止方法。
你有无限循环。除了完全冻结之外,你认为会发生什么? – dlev 2013-05-04 00:10:14
while(true){}永远是一个循环,没有中断;那么为什么或什么应该停止除了抛出异常之外的循环? – Kuchi 2013-05-04 00:10:22