2013-09-21 27 views
5

Daemon Threads fornisce servizi per i thread utente, oltre a gc Qual è un altro esempio (caso) in cui è possibile utilizzare un thread daemon? (Qualsiasi compito (logico) che può essere all'interno del metodo di una daemonThreadrun() in pratica)Thread Daemon - Use case

+1

@ user976025 il tuo post dovrebbe essere contrassegnato come wiki della comunità, in quanto è soggetto a discussione invece di richiedere una risposta precisa e definita. –

risposta

4

Ecco un breve elenco di quando si consiglia di utilizzare un thread demone:

  • raccolta di statistiche e lo svolgimento dei compiti di monitoraggio dello stato - Invio e ricezione di battiti cardiaci di rete, fornendo i servizi per gli strumenti di monitoraggio, e così via.
  • Esecuzione di attività I/O asincrone - È possibile creare una coda di richieste I/O e impostare un gruppo di thread daemon che soddisfino tali richieste in modo asincrono.
  • Ascolto connessioni in entrata - I thread daemon sono molto convenienti in situazioni come questa, perché consentono di programmare un semplice ciclo "per sempre", anziché creare un'installazione che presta attenzione alle richieste di uscita dal thread principale.
+0

Sto pensando al suggerimento di inviare statistiche utente (sulle prestazioni di uno strumento o attività di un utente su quello strumento) come quelle di Eclipse o di qualsiasi altro strumento, cioè generare quel tipo di report in un thread daemon non è vero? destra? – LeandreM

+0

@ user976095 Assolutamente, questi tipi di attività di I/O di rete dovrebbero essere eseguiti su thread daemon. Per me, il daemon generale/non demone "cutoff" segue la linea "per l'utente" e "per il programma". L'invio delle statistiche è sicuramente "per il programma", non "per l'utente". Gli utenti non apprezzerebbero che il thread delle tue statistiche finisca quando chiudono il programma, quindi il thread dovrebbe essere in esecuzione in modalità demone. – dasblinkenlight

2

Sembra una domanda di assegnazione ha ha.

È inoltre possibile utilizzarli per l'I/O perché il blocco di operazioni IO è il migliore per farlo in un thread di lavoro.

Anche attività di rete se si sta aspettando che le cose si scarichino ecc. Come la risposta a una richiesta di posta.

1

I thread daemon vengono in genere utilizzati per eseguire servizi per l'applicazione/applet (ad esempio il caricamento dei "bit di fiddley"). La differenza principale tra thread utente e thread daemon è che la JVM arresta un programma solo quando tutti i thread utente sono terminati. I thread daemon vengono terminati da JVM quando non ci sono più thread utente in esecuzione, incluso il thread principale di esecuzione.

In breve: i thread daemon non impediscono la chiusura del programma; i thread utente impediscono al programma di uscire.