## ¿Qué es un Thread?

Todos los programadores están familiarizados con la escritura de programas secuenciales. Tú probablemente hayas escrito un programa que muestre "Hello World!", o que ordene una lista de nombres, o que calcule la lista de números primos. Estos son programas secuenciales: cada uno tiene un principio, una secuencia de ejecución y un final. En un momento dado durante la ejecución del programa hay un sólo punto de ejecución.

Un Thread es similar a los programas secuenciales descritos arriba: un sólo thread también tiene un principio, un final, una secuencia, y en un momento dado durante el tiempo de ejecución del thread sólo hay un punto de ejecución. Sin embargo, un thread por si mismo no es un programa. No puede ejecutarse por sí mismo, pero si con un programa.

Definición: Un thread es un flujo secuencial de control dentro de un programa.

No hay nada nuevo en el concepto de un sólo thread. Pero el juego real alrededor de los threads no está sobre los threads secuenciales solitarios, sino sobre la posibilidad de que un solo programa ejecute varios threads a la vez y que realicen diferentes tareas.

El navegador HotJava es un ejemplo de una aplicación multi-thread. Dentro del navegador HotJava puedes moverte por la página mientras bajas un applet o una imagen, se ejecuta una animación o escuchas un sonido, imprimes la página en segundo plano mientras descargas una nueva página, o ves cómo los tres algoritmos de ordenación alcanzan la meta.

Algunos textos utilizan el nombre proceso de poco peso en lugar de thread. Un thread es similar a un proceso real en el que un thread y un programa en ejecución son un sólo flujo secuencial de control. Sin embargo, un thread se considera un proceso de poco peso porque se ejecuta dentro del contexto de un programa completo y se aprovecha de los recursos asignados por ese programa y del entorno de éste.

Como un flujo secuencial de control, un thread debe conseguir algunos de sus propios recursos dentro de un programa en ejecución. (Debe tener su propia pila de ejecución y contador de programa, por ejemplo). El código que se ejecuta dentro de un Thread trabaja sólo en éste contexto. Así, algunos texto utilizan el término contexto de ejecución como un sinónimo para los threads.

Ozito