2010-02-10 7 views
5

Ho creato una semplice applicazione Java che ha JFrame e pochi JButtons. Quando ho provato a ispezionare l'applicazione java usando JVMTI ho scoperto che sebbene non avessi creato alcun thread esplicito ne erano stati generati molti.Quali sono questi thread che vengono spiati quando un'applicazione Java inizia la sua esecuzione?

sono riuscito a trovare i seguenti thread:

  • DestroyJavaVM
  • AWT-EventQueue-0
  • AWT-Shutdown
  • AWT-XAWT- Daemon Discussione
  • Java2D Disposer- Daemon Discussione
  • Thread da-daemon Daemon [Creato dall'agente JVMTI]
  • Segnale dispatcher- Daemon Discussione
  • Finalize- Daemon Discussione
  • Riferimento Handler- Daemon Discussione

La maggior parte di loro erano in stato Runnable. Qualcuno può dirmi la funzione di questi thread?

risposta

9

Questi thread sono utilizzati dalle librerie sottostanti per gestire i widget, la visualizzazione, il ciclo di eventi e altri impianti idraulici necessari per l'applicazione grafica.

Un'applicazione GUI di solito ha molte parti mobili e, se hai notato, non devi scrivere esplicitamente alcun codice per gestire queste parti (ad esempio, aggiornare lo schermo o disegnare un pulsante o gestire un movimento del mouse). È questo insieme di thread in background che sono responsabili della gestione di queste parti e che rendono il più semplice possibile concentrarsi sulla logica dell'applicazione.

Questi thread sono generati dalle librerie che si utilizzano (ad esempio AWT, Swing, ecc.) E di solito puliscono da soli (e le risorse che gestiscono) fino alla cessazione.

1

vi posso dire uno, e indovinare tre ...

  • AWT-EventQueue-0

Questa è la GUI/Awt filo/Swing. Qualunque cosa sia scritta sulla GUI deve essere eseguita su questo thread! A volte, se penso che ci sia un punto in cui un altro thread potrebbe scrivere alla GUI, andrò al punto in cui penso che la contesa potrebbe accadere e asserire che il nome del thread corrente corrisponde a "AWT-EventQueue-0" .

Spero davvero che Sun abbia rilasciato una versione "Debug" della libreria che ha affermato l'uso corretto dei thread in tutti i componenti - avrebbe salvato un sacco di grattacapi e salvato Java dall'avere un REP davvero pessimo per l'arresto anomalo delle GUI quando sono davvero persone che non capiscono questo thread.

Questi sono probabilmente tutti collegati al garbage collector filettato:

  • Java2D Disposer- daemon filettatura
  • Finalize- daemon filettatura
  • Riferimento Handler- daemon filettatura
Problemi correlati