我正在写我的代码。启动另一个可以在 awt 线程中调用的类的私有函数。SwingUtilities.invokeLater
我只是在我的线程类中编写该函数的代码。
main() {
SwingUtilities.invokeLater(new Runnable() {
//code of private function
});
}
但执行此控制后不会回到主线程。谁能建议正在发生的事情以及如何解决这个问题?
我正在写我的代码。启动另一个可以在 awt 线程中调用的类的私有函数。SwingUtilities.invokeLater
我只是在我的线程类中编写该函数的代码。
main() {
SwingUtilities.invokeLater(new Runnable() {
//code of private function
});
}
但执行此控制后不会回到主线程。谁能建议正在发生的事情以及如何解决这个问题?
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
.)
SwingUtilities.invokeLater(Runnable)
将按照您正确说明的方式执行 EDT 中的代码。main
线程在调用invokeLater
. 如果您在调试器中执行程序并且在 EDT 中执行的代码中的某处有断点,您可能看不到主线程,但main
线程肯定会执行。