unidad 4 tópicos avanzados de programación

9
Tópicos Avanzados de Programación J-4 ISC 4 SEMESTRE GRUPO “B” UNIDAD IV Programación concurrente MultiHilos. Irving Saúl Che Canul

Upload: irving-che

Post on 26-Jul-2015

176 views

Category:

Technology


5 download

TRANSCRIPT

Page 1: Unidad 4 tópicos avanzados de programación

Tópicos Avanzados de Programación

J-4ISC 4 SEMESTRE GRUPO “B”

UNIDAD IV Programación concurrente MultiHilos.

Irving Saúl Che Canul

Page 2: Unidad 4 tópicos avanzados de programación

Hilo (theread) llamado también proceso ligero o subproceso, es la unidad de ejecución de un proceso y esta asociado con una secuencia de instrucciones un conjunto de registros y una pila. Cuando se crea un proceso el S.O crea su primer hilo (hilo primario) en la cual puede,a su vez,crear hilos adicionales. esto pone de manifiesto que un proceso no ejecuta,si no que es sólo el espacio de direcciones donde recide el código que es ejecutado mediante uno o más hilos.

Concepto de hilo

Page 3: Unidad 4 tópicos avanzados de programación

 los hilos pueden encontrarse en unos de los siguientes estados. NUEVO.- El hilo ha sido creado pero aun no ha sido activado. Cuando se active

pasará al estado preparado.   PREPARADO.- El hilo está activado y le ha sido asignada la UCP. EN EJECUCIÓN.- El hilo está activo y le ha sido asignada la UCP(solo hilo activos

 preparados solo pueden ser ejecutados). BLOQUEADO.- El hilo espera que otro elimine el bloqueo de un hilo bloqueado. DORMIDO. -El  hilo está bloqueado durante una cantidad de tiempo

determinada después de la cual despertará y pasará al estado preparado. ESPERANDO.-El hilo está esperando que ocurra alguna cosa: una condición, una

operación de E/S o adquirir la propiedad de un objeto sincronismo. Cuando ocurra, pasará al estado preparado.

MUERTO.-El hilo ha finalizado (está muerto)  pero todavía no ha sido recogido por  su padre. Los hilos muertos no pueden alcanzar ningún otro estado.

Page 4: Unidad 4 tópicos avanzados de programación

Programas De Flujo Único  Un programa de flujo único, tarea única o mono -hilo

(single-thread) utiliza un único flujo de control (thread) para controlar su ejecución. Muchos programas no necesitan la potencia o utilidad de multiples tareas. sin necesidad para especificar explicitamente que se quiere un único flujo de control, muchos de los applets y aplicaciones son de flujo único.

Comparación de un programa de flujo único contra uno de flujo múltiple

Page 5: Unidad 4 tópicos avanzados de programación

En la aplicación de Saludo, no se ve la tarea que está ejecutando el programa. Sin embargo, java posibilita la creación de tareas explícitamente. La utilización de las tareas (threads) en java permite una enorme flexibilidad a los programadores a la hora de plantearse el desarrollo de aplicaciones. La simplicidad para crear, configurar y ejecutar tareas permite que se puedan implementar muy poderosas y portables aplicaciones/applets que no se pueden crear con lenguajes de tercera generación. En un lenguaje orientado a Internet como es Java, esta herramienta es vital.

Si el lector a utilizado un navegador con soporte en Java, ya habrá visto el uso de múltiples tareas en Java. Habrá observado que dos applets se pueden ejecutar al mismo tiempo, o bien que puede desplazar la página del navegador mientras el applet continúa ejecutándose. Esto no significa que el applet utilice múltiples tareas, sino que el navegador es multitareas, multihilo, multihilvanado o multithreaded.

Los navegadores utilizan diferentes tareas ejecutándose en paralelo para realizar varias tareas,"aparentemente" de forma concurrente. Por ejemplo, en muchas páginas Web se puede desplazar la página e ir leyendo el texto antes de que todas la imágenes estén presentes en la pantalla. En este caso, el navegador está descargando las imagenes en una tarea y soportando el desplazamiento de la página en otra tarea diferente.

Las aplicaciones (y applets) multitarea utiliza muchos contextos de ejecución para cumplir su trabajo. Se aprovecha del hecho de que muchas tareas contienen subtareas distintas e independientes. Se puede utilizar un hilo de ejecución para cada subtarea.

Mientras que los programas de flujo único pueden realizar su tarea ejecutando las subtareas secuencialmente, un programa multitarea permite que cada tarea comience y termine tan pronto como sea posible. Este comportamiento presenta una mejor respuesta a la entrada en tiempo real.

PROGRAMAS DE FLUJO MÚLTIPLE

Page 6: Unidad 4 tópicos avanzados de programación

Para crear un hilo hay dos formas de conseguir los hilos ejecutables, ya se acon un runnable que es la interfaz o por medio de un extender. Así mismo vemos que en un hilo se puede quedar dormido, ya que este es de forma concurrente que nos permite ejecutar varios procesos a la vez. En este caso para la elución se utiliza el start que seria el que corre al programa (run).

Creación y control de hilos

Page 7: Unidad 4 tópicos avanzados de programación

Cuando se están utilizando hilos múltiples, algunas veces es necesario coordinar las actividades de dos o más. El proceso por el cual se logra esto se llama sincronización. La razón más común para la sincronización es cuando dos o mas hilos necesitan acceso a un recurso compartido que sólo puede ser utilizado por un hilo a la vez. Otra razón para la sincronización es cuando un hilo está esperando un evento causado por otro hilo. En este caso, debe de haber algún medio por el cual el primer hilo se mantenga en estado suspendido hasta que el evento ocurra.

La sincronización esta soportada por la palabra clave synchronized y por unos cuantos métodos bien definidos que tienen todos los objetos.

Sincronización de hilos

Page 8: Unidad 4 tópicos avanzados de programación

Los hilos son programas que se ejecuta de manera simultanea,el cual tiene varias etapas en el momento de su ejecución-

NUEVO PREPARADO EN EJECUCIÓN BLOQUEADO DORMIDO ESPERANDO MUERTO

Conclusión

Page 9: Unidad 4 tópicos avanzados de programación

Las faces en las etapas en las que se encuentran los distintos procesos los cuales son definidos por el usuario,las multitareas las ocupamos para procesos multiples por ejemplo una calculadora,.