Los procesadores y los Sistemas Operativos modernos permiten la multitarea. es decir, la
realización simultánea de dos o más actividades (al menos aparentemente). En la realidad, un
ordenador con una sola CPU no puede realizar dos actividades a la vez. Sin embargo los Sistemas
Operativos actuales son capaces de ejecutar varios programas "simultáneamente" aunque sólo se
disponga de una CPU: reparten el tiempo entre dos (o más) actividades, o bien utilizan los tiempos
muertos de una actividad (por ejemplo, operaciones de lectura de datos desde el teclado) para
trabajar en la otra.
En ordenadores con dos o más procesadores la multitarea es real, ya que cada
procesador puede ejecutar un hilo o thread diferente. La Figura 6.1. tomada del Tutorial de Sun,
muestra los esquemas correspondientes a un programa con una o dos threads.
Un proceso es un programa ejecutándose de fonna independiente y con un espacio propio de
memoria. Un Sistema Operativo multitarea es capaz de ejecutar más de mi proceso
simultáneamente. Un thread o hilo es un flujo secuencial simple dentro de un proceso. Un único
proceso puede tener varios hilos ejecutándose.
Por ejemplo el programa Netscape sería un proceso,
mientras que cada una de las ventanas que se pueden tener abiertas simultáneamente trayendo
páginas HTML estaría fonnada por al menos un hilo.
Un sistema multitarea da realmente la impresión de estar haciendo varias cosas a la vez y eso
es una gran ventaja para el usuario. Sin el uso de threads hay tareas que son prácticamente
imposibles de ejecutar, particulannente las que tienen tiempos de espera importantes entre etapas.
Los threads o hilos de ejecución permiten organizar los recursos del ordenador de fonna que
pueda haber varios programas actuando en paralelo. Un hilo de ejecución puede realizar cualquier
tarea que pueda realizar un programa nonnal y corriente. Bastará con indicar lo que tiene que hacer
en el método run(), que es el que define la actividad principal de las threads.
Los threads pueden ser daemon o no daemon. Son daemon aquellos hilos que realizan en
background (en un segundo plano) servicios generales, esto es. tareas que no forman paite de la
esencia del programa y que se están ejecutando mientras no finalice la aplicación.
Un thread
daemon podría ser por ejemplo aquél que está comprobando permanentemente si el usuario pulsa
un botón. Un programa de Jara finaliza cuando sólo quedan corriendo threads de tipo daemon. Por
defecto, y si no se indica lo contrario, los threads son del tipo no daemon.
No hay comentarios:
Publicar un comentario