O ambiente operacional deste tutorial: sistema Windows 7, versão Java 10, computador DELL G3.
1. Novo : Threads que não foram iniciados após a criação estão neste estado.
2. Executável : inclui Running e Ready no estado do thread do sistema operacional. Ou seja, o thread neste estado pode estar em execução ou aguardando que o sistema operacional aloque tempo de execução para ele.
3. Esperando : Threads neste estado não receberão tempo de execução do processador. Eles precisam esperar para serem explicitamente despertados por outros threads. O método a seguir fará com que o thread entre em estado de espera:
O método Object::wait() não define o parâmetro Timeout;
Método Thread::join() sem definir o parâmetro Timeout;
Método LockSupport::park().
4. Espera Temporizada : Threads neste estado não receberão tempo de execução do processador, mas não precisam esperar para serem explicitamente despertados por outros threads. Eles serão automaticamente despertados pelo sistema após um determinado período de tempo. O método a seguir colocará o thread em estado de espera de prazo:
Método Object::wait() com parâmetro Timeout definido;
Método Thread::join() com parâmetro Timeout definido;
Método LockSupport::parkNanos();
Método LockSupport::parkUntil().
5. Bloqueado : O thread está bloqueado. A diferença entre "estado bloqueado" e "estado de espera" é que o "estado bloqueado" está aguardando para adquirir um bloqueio exclusivo. "estado de espera" é a espera por um período de tempo ou pela ocorrência da ação de ativação. O thread entrará neste estado enquanto o programa aguarda para entrar na área de sincronização.
6. Terminado : O status do thread finalizado, o thread encerrou a execução.
Acima estão os seis estados dos threads Java. Espero que possam ser úteis para todos.
Mais guia de aprendizagem Java: tutorial java