Почему простое Java-приложение с графическим интерфейсом создает так много потоков?
Java использует потоки для многих вещей:
Простой Java Swing GUI имеет следующие потоки:
Thread [AWT-Shutdown] (Suspended) Object.wait(long) line: not available [native method] [local variables unavailable] Object.wait() line: 485 AWTAutoShutdown.run() line: 265 Thread.run() line: 619 Daemon Thread [AWT-Windows] (Suspended) WToolkit.eventLoop() line: not available [native method] [local variables unavailable] WToolkit.run() line: 295 Thread.run() line: 619 Thread [AWT-EventQueue-0] (Suspended) Object.wait(long) line: not available [native method] [local variables unavailable] EventQueue(Object).wait() line: 485 EventQueue.getNextEvent() line: 479 EventDispatchThread.pumpOneEventForFilters(int) line: 236 EventDispatchThread.pumpEventsForFilter(int, Conditional, EventFilter) line: 184 EventDispatchThread.pumpEventsForHierarchy(int, Conditional, Component) line: 174 EventDispatchThread.pumpEvents(int, Conditional) line: 169 EventDispatchThread.pumpEvents(Conditional) line: 161 EventDispatchThread.run() line: 122 Thread [DestroyJavaVM] (Suspended)
Также, если вы запустите jconsole (бесплатное java-приложение в jdk) и подключитесь к работающей java-программе, есть вкладка «поток», которая позволит вам посмотреть, сколько потоков, а также список потоков, которые выможете нажать для получения дополнительной информации.
Если вы подключите отладчик, вы сможете увидеть имена и догадаться,
но потоки, вероятно, один или два потока сборки мусора, несколько фоновых тем, таких как таймеры, очистка и т. д.