Boa*_*ann 5 java swing thread-safety
在我的main(String[] args)
方法中,我没有调用在Swing线程上SwingUtilities.invokeAndWait
运行main1
方法.我一直认为我需要这个用于线程安全.我被告知没有必要,因为执行任何GUI代码的第一个线程成为 GUI线程.换句话说,你只能从一个线程使用Swing,但是哪一个并不重要.但我找不到这方面的来源,我想确定.
你被告知的是假的.该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));
}
});
}
}
Run Code Online (Sandbox Code Playgroud)