En Java, los subprocesos tienen 5 estados diferentes: Nuevo, Ejecutable, En ejecución, Bloqueado y Muerto. El diagrama de conversión entre ellos es el siguiente:
Hay una excepción en la figura anterior. Llamar al método yield() puede transferir el subproceso actualmente en ejecución al estado listo. Si desea probar si un hilo ha muerto, puede usar el método isAlive(), que devuelve verdadero cuando el hilo está listo, ejecutándose o bloqueado, y devuelve falso cuando se crea o muere. No intente reiniciar un hilo muerto llamando al método start(). Muerte significa muerte, al igual que los seres humanos, es imposible regenerarse. Además, no llame al método start() dos veces en un hilo, ya que esto también provocará una excepción.