在我的main(String[] args)
方法中,除了调用在 Swing 线程上SwingUtilities.invokeAndWait
运行方法外,我什么都没有。main1
我一直认为我需要这个来保证线程安全。有人告诉我这不是必需的,因为执行任何 GUI 代码的第一个线程成为GUI 线程。或者换一种说法,你只能从一个线程中使用 Swing,但不管是哪个线程。但我找不到这方面的来源,我想确定一下。
问问题
140 次
1 回答
7
你被告知的是错误的。该main
方法最初将由主线程调用。所有与 GUI 相关的活动都必须在称为Event Dispatch Thread的完全独立的线程上执行。主线程不会成为 EDT。
一个很好的例子来看看我在说什么:
public class ThreadTest {
public static void main(String[] args) {
final Thread main = Thread.currentThread();
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
Thread edt = Thread.currentThread();
System.out.println(main);
System.out.println(edt);
System.out.println(main.equals(edt));
}
});
}
}
于 2012-06-12T23:05:33.877 回答