Существующий поток диспетчеризации событий заблокирован, и поэтому 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