Ciclo de Vida da Thread em Java – Estados da Thread em Java

Entendendo o Ciclo de Vida de Threads em Java e Estados de Threads são muito importantes quando se trabalha com Threads e programação para ambiente multithread. A partir do 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 temos que criar o objeto Thread e chamar o método start() para executar o método run() como uma thread.

Ciclo de Vida de Threads em Java

Abaixo, o diagrama mostra diferentes estados do ciclo de vida de threads em java. Podemos criar uma thread em java e iniciá-la, mas como os estados da thread mudam de Runnable para Executando para Bloqueado depende da implementação do escalonador de threads do sistema operacional e o java não tem controle total sobre isso.

Nova

Quando criamos um novo objeto de Thread usando o operador new, o estado da thread é Novo Thread. Neste ponto, a thread não está viva e é um estado interno à programação Java.

Runnable

Quando chamamos a função start() no objeto de Thread, seu estado é alterado para Runnable. O controle é dado ao escalonador de threads para concluir sua execução. Se deve executar esta thread instantaneamente ou mantê-la na fila de threads executáveis antes de executá-la, depende da implementação do sistema operacional do escalonador de threads.

Running

Quando a thread está em execução, seu estado é alterado para Running. O escalonador de threads escolhe uma das threads da fila de threads executáveis e a altera para Running. Então a CPU começa a executar esta thread. Uma thread pode mudar de estado para Runnable, Dead ou Blocked a partir do estado de execução, dependendo do fatiamento de tempo, da conclusão da thread do método run() ou da espera por alguns recursos.

Bloqueado/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.

Morto

Quando a thread termina a execução, seu estado é alterado para Dead e é considerada não ativa. 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