Ciclo de vida de los hilos en Java y programación de los hilos

Por Chaitanya Singh | Filed Under: Multihilo

En el post anterior he cubierto casi todos los términos relacionados con los hilos de Java. Aquí aprenderemos el ciclo de vida de los hilos en java, también veremos la programación de los hilos.

Lecturas recomendadas:

Multihilos en Java

1.Ciclo de vida del hilo en Java

  • El método de inicio crea los recursos del sistema, necesarios para ejecutar el hilo, programa el hilo para que se ejecute y llama al método de ejecución del hilo.
  • Un hilo se convierte en «No ejecutable» cuando se produce uno de estos eventos: Si se invoca el método de espera, el hilo llama al método de espera. El hilo se bloquea en E/S.
  • Un hilo muere de forma natural cuando el método run sale.

El siguiente diagrama muestra claramente las distintas fases del ciclo de vida de un hilo en Java.

ciclo de vida del hilo en java

2. Programación del hilo

  • La ejecución de múltiples hilos en una sola CPU, en cierto orden, se llama programación.
  • En general, el hilo ejecutable de mayor prioridad está activo (en ejecución)
  • Java es prioritario Si un hilo de alta prioridad se despierta, y un hilo de baja prioridad se ejecuta, entonces el hilo de alta prioridad se ejecuta inmediatamente.
  • Permite el procesamiento a pedido
  • Uso eficiente de la CPU

2.1 Tipos de programación

  • Esperar y notificarEsperar [wait()] y notificar [notify(), notifyAll()] proporciona medios de comunicación entre hilos que se sincronizan en el mismo objeto.
  • wait(): cuando se invoca el método wait() en un objeto, el hilo que ejecuta ese código abandona su bloqueo en el objeto inmediatamente y mueve el hilo al estado de espera.
  • notify(): Esto despierta a los hilos que llamaron a wait() en el mismo objeto y mueve el hilo al estado de listo.
  • notifyAll(): Despierta todos los hilos que han llamado a wait() en el mismo objeto.
  • Running and YieldingYield() se utiliza para dar a los otros hilos de la misma prioridad la oportunidad de ejecutarse, es decir, hace que el hilo que se está ejecutando actualmente se mueva a un estado de ejecución.
  • Sleeping and Waking upnSleep() se utiliza para detener un hilo durante un período de tiempo determinado, es decir, hace que el hilo que se está ejecutando en ese momento pase a estado de reposo durante un período de tiempo determinado, antes de pasar a estado de ejecución. Thread.sleep(nº de milisegundos);

2.2 Prioridad del hilo

  • Cuando se crea un hilo de Java, hereda su prioridad del hilo que lo creó.
  • Puedes modificar la prioridad de un hilo en cualquier momento después de su creación usando el método setPriority.
  • Las prioridades de los hilos son números enteros que oscilan entre la MIN_PRIORIDAD (1) y la MAX_PRIORIDAD (10) . Cuanto más alto sea el número entero, más alta será la prioridad. Normalmente la prioridad del hilo será 5.

2.3 Métodos isAlive() y join()

  • El método isAlive() se utiliza para determinar si un hilo sigue vivo. Es la mejor manera de determinar si un hilo se ha iniciado pero aún no ha completado su método run(). final booleano esAlive();
  • El método no estático join() de la clase Thread permite a un hilo «unirse al final» de otro hilo. Este método espera hasta que el hilo en el que se llama termina. final void join();

3. Bloqueo de hilos

  • Cuando se lee de una corriente, si la entrada no está disponible, el hilo se bloqueará
  • El hilo está suspendido («bloqueado») hasta que la E/S esté disponible
  • Permite que otros hilos se activen automáticamente
  • Cuando la E/S está disponible, el hilo se despierta de nuevo. Se vuelve «ejecutable», es decir, se pone en estado listo.

4. Agrupación de hilos

  • Los grupos de hilos proporcionan un mecanismo para recoger múltiples hilos en un solo objeto y manipular esos hilos todos a la vez, en lugar de individualmente.
  • Para poner un nuevo hilo en un grupo de hilos, el grupo debe
  • se especificará explícitamente cuando se cree el hilo – public Thread(ThreadGroup group, Runnable runnable)- public Thread(ThreadGroup group, String name)- public Thread(ThreadGroup group, Runnable runnable, String name)
  • Un hilo no puede ser movido a un nuevo grupo después de que el hilo haya sido creado.
  • Cuando una aplicación Java se inicia por primera vez, el sistema de ejecución de Java crea un ThreadGroup llamado main.
  • Los grupos de hilos de Java son implementados por la clase java.lang.ThreadGroup.

Palabras clave: ciclo de vida de los hilos en java , tutorial de hilos en java, uso de hilos en java, ejecución de javathread.

  1. ¿Por qué no llamamos directamente al método run(), por qué llamamos al método start()?
  2. Multihilos en java con ejemplos
  3. Lo básico: Todo sobre los hilos de Java
  4. El método join() en Java con el ejemplo
  5. ¿Cuál es la diferencia entre un proceso y un hilo en Java?
  6. Hilo de demonio en Java con ejemplo
5/5 - (2 votos)

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Scroll al inicio