programacion de hilos estructura de datos

Post on 21-Oct-2015

71 Views

Category:

Documents

3 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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.

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.

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.

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.

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.

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();

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.

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:

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.

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.

top related