Существующий поток отправки событий блокируется, и поэтому swing создает другой поток, который перекачивает события. Тогда это поток отправки событий на время диалога.
Swing создает отдельный собственный поток для перекачки собственных оконных сообщений ОС. Это отдельно от потока событий AWT.
В Windows вы видите эти темы
"AWT-Windows" - the native UI thread
"AWT-EventQueue-0" - the current AWT event dispatch thread
РЕДАКТИРОВАТЬ: отрицательный голос верен. Это неверно, по крайней мере, не во всех случаях.
Модальные диалоги часто сами заботятся о прокачке событий AWT. Если вы запустите код
SwingUtilities.invokeAndWait(new Runnable()
{
public void run()
{
JOptionPane.showInputDialog("hello");
}
});
а затем прервите, глядя на потоки, вы увидите только один поток EventQueue. Метод show () JOptionPane сам перекачивает события.
Такие фреймворки, как Spin и Foxtrot, используют тот же подход - они позволяют вам создать длительный метод блокировки на EDT. , но поддерживайте течение событий, накачивая сами события. У Swing может быть несколько потоков отправки (я уверен, что это было в случае со старыми версиями Swing), но теперь, когда многоядерность является обычным явлением, проблемы с параллелизмом, в частности, обеспечение правильной публикации изменений в одном потоке для других потоков, означают, что использование нескольких EDT приводит к ошибкам в текущей реализации. См. Несколько потоков отправки событий Swing
person
mdma
schedule
12.06.2010