¿Qué es un hilo o thread?
Un hilo es un flujo secuencial de instrucciones que está dentro de un proceso.
Un hilo es también conocido como proceso ligero.
Un hilo en Java es una instancia de la clase java.lang.Thread
Los hilos son uno de los recursos más importantes en programación para realizar
varias tareas
de forma simultánea.
Los hilos de un mismo proceso comparten casi todo: ficheros abiertos, espacio de
memoria, información de protección, temporizadores, señales, etc. Pero al mismo
tiempo, cada hilo tiene también su parte privada: su propia pila, su propio contador
de programa y su propio estado.
¿Qué diferencia existe entre multihilo y multiproceso?
En multiproceso:
-2 o más programas independientes se ejecutan en forma paralela.
-cada programa tiene su propio espacio de memoria, su propio conjunto de
variables, sus propios recursos.
-el control lo tiene el sistema operativo, y el programador no tiene ninguna
ingerencia.
En multihilo:
-2 o más tareas se ejecutan en forma paralela pero dentro de un programa
(proceso).
-Todas las tareas comparten los recursos del programa.
-el control lo tiene el programa, y es responsabilidad del programador controlar el
acceso a los recursos.
¿Cuáles son las ventajas que ofrece la programación con hilos?
Puedes dejar ejecutando tareas en el fondo.
Evitas el bloqueo de un programa.
Incrementas la velocidad de ejecución.
Puedes hacer programas mucho más adecuados.
La programación es mucho más estructurada y fácil.
Clase Runnable
En Java no
está permitida la herencia múltiple, al menos de clases, la forma de
solucionar este problema es utilizando una que permita que las clases que
implementa la interface puedan ser utilizada por la clase
Ciclo de vida de un thread
Un hilo tiene un ciclo de vida que va desde su creación hsta su terminación.
Durante su ciclo de vida cada uno de los hilos o tareas de una aplicación puede
estar en diferentes estados
Threads y prioridades
Un hilo se convierte en prioridad si una de estas condiciones se cumple
Un hilo con una prioridad más alta esté en condiciones de ser ejecutado
(runnable), o
• El hilo termina (termina su método run), o
• Se detiene voluntariamente, o
• Alguna condición hace que el hilo no sea ejecutable (runnable), como una
operación
de entrada/salida o, si el sistema operativo tiene planificación por división de
tiempos
(time slicing), cuando expira el tiempo asignado.
Sincronización de threads
Al usar múltiples hilos, a veces es necesario coordinar las actividades de dos o
más.
La razón más común para la sincronización es cuando dos o más hilos necesitan
acceso a un recurso compartido que solo puede ser utilizado por un hilo a la vez.