Entendendo o Ciclo de Vida da Thread em Java e os Estados da Thread são muito importantes ao trabalhar com Threads e programar para ambientes multithread. No nosso último tutorial, podemos criar uma classe de thread em Java implementando a interface Runnable ou estendendo a classe Thread, mas para iniciar uma thread em Java, primeiro precisamos criar o objeto Thread e chamar o método start() para executar o método run() como uma thread.
Ciclo de Vida da Thread em Java
Abaixo, o diagrama mostra os diferentes estados do ciclo de vida da thread em Java. Podemos criar uma thread em Java e iniciá-la, mas como os estados da thread mudam de Executável para Executando para Bloqueado depende da implementação do agendador de threads do sistema operacional, e o Java não tem controle total sobre isso.
Novo
Quando criamos um novo objeto Thread usando o operador new, o estado da thread é Nova Thread. Neste ponto, a thread não está viva e é um estado interno à programação Java.
Pronta
Quando chamamos a função start() no objeto Thread, seu estado é alterado para Pronta. O controle é dado ao escalonador de threads para finalizar sua execução. Se esta thread será executada imediatamente ou mantida na pool de threads prontas antes de executar, depende da implementação do escalonador de threads pelo sistema operacional.
Executando
Quando a thread está executando, seu estado é alterado para Executando. O escalonador de threads escolhe uma das threads da pool de threads prontas e altera seu estado para Executando. Então, a CPU começa a executar esta thread. Uma thread pode mudar de estado para Pronta, Morta ou Bloqueada a partir do estado de execução, dependendo do fatiamento de tempo, da conclusão do método run() da thread ou da espera por alguns recursos.
Bloqueada/Esperando
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.
Morta
Assim que a execução da thread é concluída, seu estado é alterado para Morto e considerado como não ativo. Acima estão os diferentes estados da thread. É bom conhecê-los e entender como a thread altera seu estado. Isso é tudo para o ciclo de vida da thread em Java.
Source:
https://www.digitalocean.com/community/tutorials/thread-life-cycle-in-java-thread-states-in-java