Capire il Ciclo di Vita del Thread in Java e gli Stati del Thread è molto importante quando si lavora con i thread e si programma per un ambiente multithreaded. Dal nostro ultimo tutorial, possiamo creare una classe java thread implementando l’interfaccia Runnable o estendendo la classe Thread, ma per avviare un thread in Java, dobbiamo prima creare l’oggetto Thread e chiamare il suo metodo start() per eseguire il metodo run() come un thread.
Ciclo di Vita del Thread in Java
Nel diagramma sottostante sono mostrati diversi stati del ciclo di vita del thread in Java. Possiamo creare un thread in Java e avviarlo, ma come gli stati del thread cambiano da Runnable a Running a Blocked dipende dall’implementazione del programma di pianificazione del thread del sistema operativo e Java non ha pieno controllo su di esso.
Nuovo
Quando creiamo un nuovo oggetto Thread utilizzando l’operatore new, lo stato del thread è Nuovo Thread. In questo momento, il thread non è attivo ed è uno stato interno alla programmazione Java.
Runnable
Quando chiamiamo la funzione start() sull’oggetto Thread, il suo stato viene cambiato in Eseguibile. Il controllo viene passato al programma di pianificazione dei thread per completarne l’esecuzione. Se eseguire immediatamente il thread o mantenerlo nella coda dei thread eseguibili prima di eseguirlo dipende dall’implementazione del sistema operativo del programma di pianificazione dei thread.
Esecuzione
Quando il thread è in esecuzione, il suo stato diventa Esecuzione. Il programma di pianificazione dei thread sceglie uno dei thread dalla coda dei thread eseguibili e ne cambia lo stato in Esecuzione. Successivamente, la CPU inizia l’esecuzione di questo thread. Un thread può passare allo stato di Eseguibile, Morto o Bloccato dallo stato di esecuzione a seconda dello svolgimento del tempo, del completamento del metodo run() del thread o dell’attesa di risorse.
Bloccato/in Attesa
A thread can be waiting for other thread to finish using thread join or it can be waiting for some resources to available. For example producer consumer problem or waiter notifier implementation or IO resources, then it’s state is changed to Waiting. Once the thread wait state is over, it’s state is changed to Runnable and it’s moved back to runnable thread pool.
Morto
Una volta che il thread ha terminato l’esecuzione, il suo stato viene cambiato in “Dead” ed è considerato non attivo. Qui sopra sono riportati i diversi stati del thread. È utile conoscerli e capire come il thread cambia il suo stato. Questo è tutto per il ciclo di vita del thread in Java.
Source:
https://www.digitalocean.com/community/tutorials/thread-life-cycle-in-java-thread-states-in-java