Threads en Java: Tipos, Estados y Ciclo de Vida

Clasificado en Informática

Escrito el en español con un tamaño de 2,62 KB

Threads en Java

Los threads o hilos de ejecución son segmentos de código de un programa que se ejecutan secuencialmente de modo independiente de las otras partes del programa. La principal utilización de thread en un programa es para el aislamiento y sincronización de tareas. La clase Thread desciende de Object e implementa la interface Runnable y no es necesario importarlas a nuestro programa ya que se encuentran dentro del paquete java.lang. En java existen dos formas de utilizar o crear un thread :

  • Creando una clase que herede de la clase Thread y sobrecargando el método run().
  • Implementando la interface Runnable, y declarar el método run().

Estados o ciclo de vida de un thread

  • Nuevo (New): El thread ha sido creado, pero no se ha ejecutado todavía el método start(), por lo que todavía no se ha lanzado.
  • Ejecutable (Runnable): El thread se está ejecutando, pero esto no quiere decir que se esté ejecutando en todo momento, pues ese thread tiene que repartirse el tiempo de CPU con los demás threads que sean también Runnable.
  • Muerto (Dead): Cuando el thread ya acabó con su función, es decir el método run() ha finalizado, o cuando el programa principal termina, u otro caso, como un error que provoque el paro total del thread.
  • Bloqueado (Blocked o Not Runnable): El thread podría estar ejecutándose, pero hay algo que se lo impide, como por ejemplo una operación de E/S. Mientras un thread esté en este estado, no se le asigna tiempo de CPU. También cuando se llama a los métodos sleep(long) y wait([long]).

Tipos de Threads

  • Threads completamente independientes, que realizan tareas no relacionadas. Como el caso de imprimir un documento.
  • Threads que trabajan con una misma tarea, es decir se ayudan entre ellos, pero sin interferir ni intercambiar relación entre ellos. Por ejemplo, threads que colaboran en el producto de dos matrices, ocupándose cada una de ellas de calcular ciertas filas de la matriz producto.
  • Threads que utilizan recursos de modo mutuamente exclusivo, aunque sin tener que coordinar sus actividades. Este ocurre en los threads que intentan leer o actualizar un registro en la base de datos.
  • Threads que deben coordinar sus actividades, de modo que una de ellas no puede empezar o continuar hasta que la otra haya realizado su tarea. Un ejemplo muy conocido es el problema del productor-consumidor.

Entradas relacionadas: