1

我正在写我的代码。启动另一个可以在 awt 线程中调用的类的私有函数。SwingUtilities.invokeLater我只是在我的线程类中编写该函数的代码。

main() {

    SwingUtilities.invokeLater(new Runnable() {

        //code of private function

    });

}

但执行此控制后不会回到主线程。谁能建议正在发生的事情以及如何解决这个问题?

4

2 回答 2

3

SwingUtilities.invokeLater不会阻塞当前线程的执行。如果相信它,你可以简单地做

System.out.println("Before");

SwingUtilities.invokeLater(new Runnable() {
        public void run() {
            //code of private function
        }
    });

System.out.println("After");

你会或多或少地立即看到Before并打印出来。After

(确保您没有意外使用SwingUtilities.invokeAndWait.)

于 2012-03-30T11:48:33.507 回答
1

SwingUtilities.invokeLater(Runnable)将按照您正确说明的方式执行 EDT 中的代码。main线程在调用invokeLater. 如果您在调试器中执行程序并且在 EDT 中执行的代码中的某处有断点,您可能看不到主线程,但main线程肯定会执行。

于 2012-03-30T11:49:24.143 回答