programacion de hilos estructura de datos

13
CURSO: ESTRUCTURAS DE DATOS Tema: Programación de Hilos Concepto de Hilo Es un Flujo de control secuencial dentro de un programa. Un hilo tiene un comienzo, una secuencia de ejecución 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.

Upload: patricio-maldonado

Post on 21-Oct-2015

67 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Programacion de Hilos Estructura de Datos

CURSO: ESTRUCTURAS DE DATOS

Tema: Programación de Hilos

Concepto de Hilo

Es un Flujo de control secuencial dentro de un programa. Un hilo tiene un comienzo, una secuencia de ejecución 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.

Page 2: Programacion de Hilos Estructura de Datos

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, entendiéndose por tarea, un hilo de ejecución o un thread, también denominados de flujo único, en contraste con los programas que realizan más de una tarea, o de multitareas o multithreads, denominados de flujo múltiple.

Page 3: Programacion de Hilos Estructura de Datos

Flujo único: programa de flujo único (single-Thread) utiliza un solo hilo para controlar su ejecución. Por defecto, cualquier programa applet o aplicación Java, tiene un hilo denominado principal (Thread).

Flujo múltiple: un programa de flujo múltiple o multitarea, utiliza varios contextos de ejecución 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.

Page 4: Programacion de Hilos Estructura de Datos

La programación basada en multihilos, permite escribir programas más eficientes ya que optimizan los recursos de la Unidad Central de Proceso (CPU), al reducir al mínimo los tiempos de inactividad.

Al mostrarse un archivo o una imagen dentro de un navegador y acceder en seguida a una dirección electrónica o URL para una búsqueda, es un ejemplo de aplicación multihilo.

Page 5: Programacion de Hilos Estructura de Datos

El modelo multihilo está en el interprete de Java, ya que las bibliotecas de clases están diseñadas 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 aplicación.

Por ejemplo: en un hilo de animación, hace que los bucles de la animación se detengan durante un tiempo, un segundo, sin hacer que se pare el resto del programa.

Cuando un hilo se detiene o se bloquea, sólo el se detiene y los demás continúan con su ejecución.

Page 6: Programacion de Hilos Estructura de Datos

Ciclo de vida de un hilo

1. Nacido: Al momento de crear un hilo, se dice que está nacido, y continúa en ese estado hasta que se invoca el método 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 método start() del hilo, se dice que está en estado listo. El método se arranca con la siguiente instrucción, para el caso del hilo miHilo:

miHilo.start();

Page 7: Programacion de Hilos Estructura de Datos

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

4. En ejecución: Un hilo en estado de listo de la más alta prioridad, pasa al estado de ejecución, cuando se le asignan los recursos de un procesador, o sea cuando inicia su ejecución. Aquí el thread está en ejecución.

Page 8: Programacion de Hilos Estructura de Datos

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

6. Muerto: Un hilo pasa al estado de muerto cuando se termina su método run(), o cuando se ha invocado su método stop(). En algún momento el sistema dispondrá entonces del hilo muerto. Un hilo puede morir de dos formas:

Page 9: Programacion de Hilos Estructura de Datos

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

6.2 muerte provocada: en cualquier momento llamando a su método stop(). Cuando el thread actual se

despierta, se lo mata con miHilo.stop(). El método stop() lanza un objeto ThreadDeath hacia al hilo a eliminar. El thread moririá cuando reciba realmente la excepción ThreadDeath.

Page 10: Programacion de Hilos Estructura de Datos

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 ejecución de un programa. La Maquina Virtual de Java (JVM) permite la ejecución de concurrente de múltiples hilos. En la clase Thread se encapsula todo el control necesario sobre los hilos de ejecución o tareas.

Page 11: Programacion de Hilos Estructura de Datos
Page 12: Programacion de Hilos Estructura de Datos
Page 13: Programacion de Hilos Estructura de Datos