Quali sono queste le discussioni che sono spwaned quando un'applicazione Java inizia la sua esecuzione?
-
19-09-2019 - |
Domanda
Ho creato una semplice applicazione Java che ha un JFrame e pochi JButtons. Quando ho provato a controllare l'applicazione java utilizzando JVMTI ho scoperto che anche se non ho creato alcun discussioni esplicite c'erano molti di loro deposto le uova.
sono riuscito a trovare i seguenti thread:
- DestroyJavaVM
- AWT-EventQueue-0
- AWT-Shutdown
- AWT-XAWT- Daemon Discussione
- Java2D Disposer- Daemon Discussione
- Thread-0- Daemon Discussione [Creato dal JVMTI Agente]
- 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 queste discussioni?
Soluzione
Questi fili sono utilizzati dalle librerie sottostanti per gestire i widget, esposizione, eventi ad anello, e altre idraulico che è necessario per l'applicazione grafica.
Un'applicazione GUI di solito ha un sacco di parti in movimento, e se avete notato non dovete scrivere in modo esplicito alcun codice per gestire queste parti (ad esempio, l'aggiornamento dello schermo, o disegnare un pulsante, o la manipolazione di un mouse movimento). E 'è questo insieme di thread in background che sono responsabili della gestione da queste parti, e renderlo il più semplice possibile per mettere a fuoco la logica dell'applicazione.
Queste discussioni sono generati dalle librerie che si utilizza (ad esempio, AWT, Swing, ecc) e di solito pulire se stessi (e le risorse che gestiscono) fino alla cessazione.
Altri suggerimenti
Vi posso dire uno, e indovinare tre ...
- AWT-EventQueue-0
Questa è la GUI / Awt / thread Swing. Tutto ciò per iscritto al GUI deve essere in esecuzione su questo thread! A volte, se penso che ci sia un punto in cui un altro thread potrebbe aver scritto alla GUI, andrò al punto in cui penso che la contesa potrebbe accadere e affermare che il nome del thread corrente corrisponde a "AWT-EventQueue-0" .
Vorrei davvero che Sun ha rilasciato una versione di "Debug" della libreria che ha asserito utilizzo filettatura corretto in tutte le componenti - avrebbe risparmiato un sacco di mal di testa e salvato Java di avere una pessima REP per schiantarsi GUI quando è in realtà le persone che non capiscono su questo thread.
Queste sono probabilmente tutti legati al garbage collector filettato:
- Java2D Disposer- Daemon Discussione
- Finalize- Daemon Discussione
- Riferimento Handler- Daemon Discussione