线程没有从SwingUtilities.invokeLater返回到主线程

时间:2012-03-30 11:45:25

标签: java swing invokelater

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

main() {

    SwingUtilities.invokeLater(new Runnable() {

        //code of private function

    });

}

但执行此控件后不会返回主线程。任何人都可以建议发生了什么以及如何解决这个问题?

2 个答案:

答案 0 :(得分:3)

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

System.out.println("Before");

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

System.out.println("After");

您会立即或多或少地立即打印BeforeAfter

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

答案 1 :(得分:1)

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