2013-05-04 102 views
0

这里是我的循环代码(这是与我的循环的唯一代码):While循环,使小程序的白色屏幕,反应迟钝

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

当我启动的小程序,它的白色屏幕和我不能关闭它,除非我在eclipse中按下“终止”按钮。

+0

你有无限循环。除了完全冻结之外,你认为会发生什么? – dlev 2013-05-04 00:10:14

+0

while(true){}永远是一个循环,没有中断;那么为什么或什么应该停止除了抛出异常之外的循环? – Kuchi 2013-05-04 00:10:22

回答

3

你有一个无限循环while阻塞UI线程。你不会说你是使用AWT还是Swing applet,无论哪种方式,结果都是一样的。如果您使用的是Swing小程序,请使用Swing Timer。如果您使用的是旧的重量级AWT,请将其转换为Swing,然后按照以前的建议进行操作。

0

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