¿Qué es un hilo?

Un hilo es la pieza más básica de concurrencia que nos vamos a encontrar en el lenguaje de programación Java, así que la primera pregunta que debería responder es: ¿qué es exactamente un hilo? A partir de la siguiente lección empezamos a escribir código que nos permita ver todo esto.

La primera estructura concurrente a estudiar es el hilo, que es la estructura más básica de concurrencia. Pese a que se trate de una estructura concurrente, a día de hoy todos los programas de ordenador usan al menos un hilo, aunque sea un programa sin concurrencia. Esto es porque los sistemas operativos modernos han integrado los hilos en sus fundamentos, por lo que todo proceso tiene al menos un hilo ejecutando las instrucciones de un programa. Otra cosa es que desde el programa solicitemos la creación de más hilos.

Pero, ¿qué es un hilo? Puedes verlo como un contexto de ejecución, que es toda la información que hay alrededor del estado en el que se encuentra un programa de ejecución, incluyendo el puntero de instrucción, para saber qué instrucción del programa es la que se está ejecutando ahora mismo; y la pila del programa, de donde se puede sacar la pila de ejecución, para saber cómo hemos llegado hasta la función en la que estamos ahora (por ejemplo; la función main() llamó a la función A() en la línea 12; la función A() llamó a la función B() en la línea 91; y la función B() llamó a la función C() en la línea 58); así como las distintas tablas de variables locales que forman parte de todas las funciones que forman parte de la pila de ejecución.

Cuando hay más de un hilo, hay más de un contexto de ejecución simultáneo para el mismo programa. Es decir, para un mismo código en ejecución tenemos múltiples punteros de instrucción con su propia traza de ejecución. Mediante las APIs del lenguaje de programación podremos crear y terminar hilos.

Los hilos tienen además cierta metainformación. En el caso de Java, por ejemplo, el nombre que le demos al hilo si es que se lo damos. También, la prioridad del hilo, es decir, cómo de crítico es que se le asigne tiempo de CPU a un hilo. Finalmente, un estado, para saber si en un momento determinado el hilo está en ejecución, está a la espera, está bloqueado por una operación IO...

Lista de reproducción
  1. 1
    ¿Qué es la concurrencia?
    8 minutos
  2. 2
    ¿Qué es un hilo?
    5 minutos
  3. 3
    Crear un hilo en Java
    10 minutos
  4. 4
    Interrupción de hilos
    10 minutos
  5. 5
    Cómo usar Thread.join
    14 minutos
  6. 6
    Corrupción de memoria
    8 minutos
  7. 7
    Monitores y synchronized
    10 minutos
  8. 8
    Bloque synchronized
    12 minutos
  9. 9
    Preguntas típicas sobre synchronized en Java
    8 minutos
  10. 10
    Interbloqueos, synchronized y el problema de la cena de los filósofos
    13 minutos
  11. 11
    Introducción a Executor en Java
    11 minutos
  12. 12
    Introducción al uso de ExecutorService en Java
    14 minutos
  13. 13
    Introducción a Thread Pools en Java
    10 minutos
  14. 14
    Cómo crear Thread Pools en Java
    11 minutos
  15. 15
    ¿Cómo funcionan wait() y notify()?
    10 minutos
  16. 16
    Ejemplo de wait() y notify() en Java
    9 minutos
  17. 17
    La palabra clave volatile
    8 minutos
  18. 18
    Cómo usar Future
    8 minutos
  19. 19
    Variables atómicas
    7 minutos