我正在编写我的代码。启动可以在awt线程中调用的另一个类的私有函数。我只需在SwingUtilities.invokeLater
线程中的类中编写该函数的代码。
main() {
SwingUtilities.invokeLater(new Runnable() {
//code of private function
});
}
但执行此控件后不会返回主线程。任何人都可以建议发生了什么以及如何解决这个问题?
答案 0 :(得分: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
。)
答案 1 :(得分:1)
SwingUtilities.invokeLater(Runnable)
将按照您的正确说明执行EDT中的代码。 main
线程在调用invokeLater
后立即继续执行。如果在调试器中执行程序并在EDT中执行的代码中有某个断点,则可能看不到主线程,但main
线程肯定会执行。