Comprender el Ciclo de Vida del Hilo en Java y los Estados del Hilo son muy importantes cuando estás trabajando con hilos y programando para un entorno multihilo. Desde nuestro último tutorial, podemos crear una clase de hilo en Java implementando la interfaz Runnable o extendiendo la clase Thread, pero para iniciar un hilo en Java, primero tenemos que crear el objeto Thread y llamar a su método start() para ejecutar el método run() como un hilo.
Ciclo de Vida del Hilo en Java
El diagrama siguiente muestra los diferentes estados del ciclo de vida del hilo en Java. Podemos crear un hilo en Java y comenzarlo, pero cómo cambian los estados del hilo de Runnable a Running a Blocked depende de la implementación del planificador de hilos del sistema operativo y Java no tiene control total sobre eso.
Nuevo
Cuando creamos un nuevo objeto Thread utilizando el operador new, el estado del hilo es Nuevo Hilo. En este punto, el hilo no está activo y es un estado interno de la programación en Java.
Runnable
Cuando llamamos a la función start() en el objeto Thread, su estado cambia a Runnable. El control se entrega al programador de hilos para que termine su ejecución. Si se ejecuta este hilo de inmediato o se mantiene en la cola de hilos listos antes de ejecutarse depende de la implementación del planificador de hilos del sistema operativo.
Ejecutándose
Cuando el hilo está en ejecución, su estado cambia a Ejecutándose. El planificador de hilos selecciona uno de los hilos de la cola de hilos listos y cambia su estado a Ejecutándose. Luego, la CPU comienza a ejecutar este hilo. Un hilo puede cambiar su estado a Runnable, Bloqueado o Muerto desde el estado de ejecución, según la división de tiempo, la finalización del método run() o la espera de algunos 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.
Muerto
Una vez que el hilo termina de ejecutarse, su estado se cambia a “Muerto” y se considera que no está vivo. Arriba se encuentran los diferentes estados del hilo. Es bueno conocerlos y cómo el hilo cambia su estado. Eso es todo para el ciclo de vida del hilo en Java.
Source:
https://www.digitalocean.com/community/tutorials/thread-life-cycle-in-java-thread-states-in-java