java eventqueue

时间:2011-04-25 15:41:26

标签: java multithreading

这个程序是在单独的线程中执行的吗?

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中运行因为程序卡住了......

1 个答案:

答案 0 :(得分:1)

当您使用EventQueue.invokeLater时,您告诉Java在EDT上运行它。

有关详情,请参阅本教程:Concurrency in Swing