/ / Muitos threads no processo java - java, multithreading, jvm

Um monte de threads no processo java - java, multithreading, jvm

Por que um aplicativo Java GUI simples cria tantos threads?

insira a descrição da imagem aqui

Respostas:

9 para resposta № 1

Java usa threads para muitas coisas:

  • O thread principal do aplicativo, é claro
  • Quaisquer threads iniciados pelo aplicativo (por exemplo, SwingWorker)
  • O Swing possui um encadeamento de despacho de evento separado, além de outros encadeamentos de limpeza
  • Temporizadores, alguns dos quais podem começar implicitamente
  • Um ou mais encadeamentos para coleta de lixo
  • Eu acho que geralmente há um thread separado preparado para executar ganchos de desligamento
  • Outras coisas internas da JVM

4 para resposta № 2

Uma GUI Java Swing simples possui os seguintes segmentos:

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)

1 para resposta № 3

Se você anexar um depurador, poderá ver os nomes e adivinhar a si mesmo,

mas os threads provavelmente são um ou dois threads de coleta de lixo, alguns tópicos de plano de fundo da GUI, como temporizadores, limpeza etc.


1 para resposta № 4

Além disso, se você iniciar o jconsole (aplicativo java gratuito nojdk) e conecte-se a um programa java em execução, existe uma guia "thread" que permite ver quantos threads existem, juntamente com uma lista de threads em que você pode clicar para obter mais informações.