Programacion de Hilos Estructura de Datos

También podría gustarte

Está en la página 1de 13

CURSO: ESTRUCTURAS DE DATOS

Tema: Programacin de Hilos


Concepto de Hilo
Es un Flujo de control secuencial dentro de un programa. Un hilo tiene un comienzo, una secuencia de ejecucin y un final. Los hilos no son programas porque no pueden ser ejecutados por ellos mismos, solo es posible hacerlo dentro de un programa, alguna de cuyas tareas, si es realizada por un hilo.

Un hilo es un flujo de control secuencial simple dentro de un programa.


Hasta el momento se han desarrollado programas que realizan una sola tarea, entendindose por tarea, un hilo de ejecucin o un thread, tambin denominados de flujo nico, en contraste con los programas que realizan ms de una tarea, o de multitareas o multithreads, denominados de flujo mltiple.

Flujo nico: programa de flujo nico (single-Thread) utiliza un solo hilo para controlar su ejecucin. Por defecto, cualquier programa applet o aplicacin Java, tiene un hilo denominado principal (Thread).
Flujo mltiple: un programa de flujo mltiple o multitarea, utiliza varios contextos de ejecucin para realizar su trabajo. Cada tarea se inicia y termina tan pronto como sea posible, lo cual es una facilidad para la entrada de datos en sistemas en tiempo real, si estos son de diferentes fuentes.

La programacin basada en multihilos, permite escribir programas ms eficientes ya que optimizan los recursos de la Unidad Central de Proceso (CPU), al reducir al mnimo los tiempos de inactividad.

Al mostrarse un archivo o una imagen dentro de un navegador y acceder en seguida a una direccin electrnica o URL para una bsqueda, es un ejemplo de aplicacin multihilo.

El modelo multihilo est en el interprete de Java, ya que las bibliotecas de clases estn diseadas teniendo en mente este modelo. Los hilos forman parte de todos los programas en Java. Un hilo en un programa Java es un procedimiento que se puede ejecutar independiente del resto de una aplicacin.

Por ejemplo: en un hilo de animacin, hace que los bucles

de la animacin se detengan durante un tiempo, un segundo, sin hacer que se pare el resto del programa. Cuando un hilo se detiene o se bloquea, slo el se detiene y los dems continan con su ejecucin.

Ciclo de vida de un hilo


1.

Nacido: Al momento de crear un hilo, se dice que est nacido, y contina en ese estado hasta que se invoca el mtodo start() del hilo. La siguiente sentencia crea un nuevo thread pero no lo arranca, por lo tanto deja el thread en el estado de nacido. Thread miHilo = new MiClaseThread();

2.

Listo: Cuando se invoca el mtodo start() del hilo, se dice


que est en estado listo. El mtodo se arranca con la siguiente instruccin, para el caso del hilo miHilo:

miHilo.start();

3. Ejecutable: cuando el mtodo start() se ejecuta, crea los recursos del sistema necesarios para ejecutar el thread, programa el thread para ejecutarse, y llama al mtodo run() del thread que se ejecuta en forma secuencial. En este punto el thread est en el estado ejecutable.
4.

En ejecucin: Un hilo en estado de listo de la ms alta prioridad, pasa al estado de ejecucin, cuando se le asignan los recursos de un procesador, o sea cuando inicia su ejecucin. Aqu el thread est en ejecucin.

5. No ejecutable : Un hilo sigue en su mtodo run(), hasta que pasa al estado de no ejecutable cuando ocurre alguno de los siguientes cuatro eventos: Se invoca a su mtodo sleep(). o su mtodo suspend(). El thread usa su mtodo wait() para esperar una condicin variable. El thread est bloqueado durante una solicitud de entrada/salida.

6.

Muerto: Un hilo pasa al estado de muerto cuando se termina su mtodo run(), o cuando se ha invocado su mtodo stop(). En algn momento el sistema dispondr entonces del hilo muerto. Un hilo puede morir de dos formas:

6.1 Muerte natural: se produce cuando su mtodo run() sale normalmente. Por ejemplo, el bucle while en este mtodo es un bucle que itera 100 veces y luego sale. Por tanto el hilo morir naturalmente cuando se llegue al final de la iteracin, es decir se termina su mtodo run().

6.2

muerte provocada: en cualquier momento llamando a su mtodo stop(). Cuando el thread actual se despierta, se lo mata con miHilo.stop(). El mtodo stop() lanza un objeto ThreadDeath hacia al hilo a eliminar. El thread moriri cuando reciba realmente la excepcin ThreadDeath.

7. Bloqueado: Es cuando el hilo realiza una solicitud de entrada/salida. Cuando termina la entrada/salida que estaba esperando, un hilo bloqueado queda en el estado listo.

La clase Thread
un thread es un hilo de ejecucin de un programa. La Maquina Virtual de Java (JVM) permite la ejecucin de concurrente de mltiples hilos. En la clase Thread se encapsula todo el control necesario sobre los hilos de ejecucin o tareas.

También podría gustarte