Che cos'è un "thread attivo" in Java?

2

Da questa discussione , ci sono due opinioni su cosa Thread # activeCount () restituisce.

  1. Un "thread attivo" sta eseguendo in realtà bytecode. È un thread che è stato avviato e non è in attesa su IO o su un blocco.
  2. Un "thread attivo" è nel metodo run() . Ad esempio, un thread non attivo non ha avviato il metodo run() o è uscito da quel metodo.

Qual è il significato attuale?

(Chiedo su Ingegneria del software come StackOverflow disfa tali domande di spiegazione.)

    
posta Joshua Fox 10.05.2018 - 12:01
fonte

2 risposte

3

Da JavaDoc per questo metodo:

Returns an estimate of the number of active threads in the current thread's thread group and its subgroups. Recursively iterates over all subgroups in the current thread's thread group.

The value returned is only an estimate because the number of threads may change dynamically while this method traverses internal data structures, and might be affected by the presence of certain system threads. This method is intended primarily for debugging and monitoring purposes.

Guardando il codice in ThreadGroup per questo, deduco che si basa sul valore della variabile nthreads di ThreadGroup che viene incrementata quando il metodo add(Thread) viene chiamato (creato) e decrementato quando remove(Thread) il metodo è chiamato.

Il metodo add viene chiamato quando viene creato un thread. Il metodo remove viene chiamato quando un thread è terminato o non riesce ad avviarsi. Cioè, viene conteggiato un thread che non è stato ancora avviato, ma se successivamente fallisce, non verrà più conteggiato.

    
risposta data 10.05.2018 - 16:41
fonte
-1

Come nella java documentazione : Stati filo:

  • BLOCCATO: stato thread per un thread bloccato in attesa di un monitor serratura.
  • NOVITÀ: stato del thread per un thread che non è ancora stato avviato.
  • RUNNABLE: stato thread per un thread eseguibile
  • TERMINATO: stato del thread per un thread terminato.
  • TIMED_WAITING: stato thread per un thread in attesa con un specificato tempo di attesa.
  • WAITING: stato thread per un thread in attesa.

Quindi attivo dipende dal contesto e di solito si riferisce alla tua seconda interpretazione.

    
risposta data 10.05.2018 - 12:51
fonte

Leggi altre domande sui tag