2011-04-25 85 views
0

这个程序要在单独的线程中执行吗?java事件队列

class Counter extends Thread { 
    public void run() { 
     EventQueue.invokeLater(new Runnable() { 
      public void run() { 
       for(int i=0;isCounting;i++) { 
        try {Thread.currentThread().sleep(100);} 
        catch (InterruptedException e) {e.printStackTrace();} 
        setTitle(""+i); 
       } 
      } 
     }); 
    } 
} 

它是扩展JFrame的类的一部分。现在,如果我在JFrame扩展类的构造函数中的某个地方启动此类的实例,它是否会在单独的线程或EDT中运行?因为我试过了,显然它运行在EDT,因为程序卡住了...

+0

参考http://stackoverflow.com/questions/3541373/should-we-use-eventqueue-invokelater-for-any-gui-update- in-java-desktop-applicati和这个http://www.javapractices.com/topic/TopicAction.do?Id=153 – Favonius 2011-04-25 15:50:50

回答

1

您在使用EventQueue.invokeLater时告诉Java在EDT上运行该程序。

更多关于此,请参阅本教程:Concurrency in Swing