La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

INFORMATICA III ESCUELA DE INGENIERIA ELECTRONICA DEPARTAMENTO DE SISTEMAS E INFORMATICA.

Presentaciones similares


Presentación del tema: "INFORMATICA III ESCUELA DE INGENIERIA ELECTRONICA DEPARTAMENTO DE SISTEMAS E INFORMATICA."— Transcripción de la presentación:

1 INFORMATICA III ESCUELA DE INGENIERIA ELECTRONICA DEPARTAMENTO DE SISTEMAS E INFORMATICA

2 CONCURRENCIA THREADS –CONCEPTOS BÁSICOS –SINCRONIZACIÓN –PRIORIZACIÓN –GRUPOS DE THREADS

3 Ing. E. D'AgostinoINFORMATICA III - 20033 Concurrencia En el mundo real pasan muchas cosas a la vez En la modelizacion de software también pueden ocurrir muchas cosas concurrentemente: Con varias computadoras se pueden ejecutar múltiples programas Con una sola computadora se pueden simular la ejecución paralela de varias actividades múltiples hilos de ejecución comparten el uso de un procesador

4 Ing. E. D'AgostinoINFORMATICA III - 20034 THREAD / HILO Un programa Un thread Un thread es un flujo de control secuencial en un programa.

5 Ing. E. D'AgostinoINFORMATICA III - 20035 MULTIPLES THREADS Un programa dos threads

6 Ing. E. D'AgostinoINFORMATICA III - 20036 Java soporta la ejecución paralela de varios threads (hilos) múltiples threads ejecutándose en una máquina pueden compartir recursos (memoria) múltiples threads ejecutándose en varias máquinas necesitan capacidades de comunicación Concurrencia

7 Ing. E. D'AgostinoINFORMATICA III - 20037 Manejo de la Concurrencia Dos formas de implementación: Ejecución de un hilo hasta que termine o se autobloquee (actividades de E/S) (deja el control) Ejecución de un hilo hasta que termine, se autobloquee o le saquen el control (cantidad de tiempo)(es desalojado)

8 Ing. E. D'AgostinoINFORMATICA III - 20038 Sirven para aislar tareas Java.lang.Thread THREAD

9 Ing. E. D'AgostinoINFORMATICA III - 20039 La concurrencia es natural en OO Ada y Simula 67 ya soportaban concurrencia Java es único entre los lenguajes de propósitos generales que pone primitivas de concurrencia a disposición del programador Programación concurrente OO

10 Ing. E. D'AgostinoINFORMATICA III - 200310 Aplicaciones concurrentes Descargas de grandes archivos de la WWW Construcción de interfases gráficas Recolección de basura de Java (garbage colector)

11 Ing. E. D'AgostinoINFORMATICA III - 200311 Inicio de la ejecución de un hilo Se invoca al método start. Este crea los recursos necesarios del sistema para ejecutar el thread, y llama al método run del thread. El invocador se ejecuta en paralelo con el thread

12 Ing. E. D'AgostinoINFORMATICA III - 200312 Estados de hilos: ciclo de vida nacidolisto ejecución muerto dormidosuspendidoen espera bloqueado Solicitud E/S Completar E/S Expìra el tiempo Termina quantum Asignar procesador Invocación de métodos Invocación de un método Cumplio condición ejecutable parado

13 Ing. E. D'AgostinoINFORMATICA III - 200313 Sincronización Pueden operar en forma independiente. Cada uno tiene todos los datos y métodos que necesita. Comparten datos y deben considerar el estado y las actividades de otros threads.

14 Ing. E. D'AgostinoINFORMATICA III - 200314 PRODUCTOR - CONSUMIDOR Problema tipo que ejemplifica la necesidad de sincronización

15 Ing. E. D'AgostinoINFORMATICA III - 200315 Escenarios productor /consumidor Un thread escribe datos en un archivo Otro thread lee datos del archivo Comparten recursos debo sincronizarlos Sincronización

16 Ing. E. D'AgostinoINFORMATICA III - 200316 Sincronización Thread bloquea Thread Solo un thread por vez puede acceder a un objeto

17 Ing. E. D'AgostinoINFORMATICA III - 200317 Sincronización de hilos Java usa monitores para la sincronización de hilos. Todo objeto con métodos “synchronized” es un monitor. El monitor sólo permite a un hilo por vez ejecutar un método “synchronized” sobre el objeto.

18 Ing. E. D'AgostinoINFORMATICA III - 200318 Métodos sincronizados Los métodos que tengan que acceder al mismo objeto, se deben declarar “synchronized” para lograr el bloqueo. La ejecución de dos métodos sincronizados es mutuamente excluyente.

19 Ing. E. D'AgostinoINFORMATICA III - 200319 class Account { private double balance public Account ( double inicial) { balance=inicial; } public synchronized double getBalance{ return balance; } public synchronized void deposito (double amount) { balance += amount; }} Métodos sincronizados

20 Ing. E. D'AgostinoINFORMATICA III - 200320 Métodos sincronizados Instancia (bloquean objetos) Clase (bloquean clases)

21 Ing. E. D'AgostinoINFORMATICA III - 200321 Creacion de threads Crear un thread Configurarlo : nombre, prioridad,etc. Ejecutarlo : invocar el método start, éste invoca al método run cuando run devuelve el control el thread ha terminado.

22 Ing. E. D'AgostinoINFORMATICA III - 200322 Un thread se puede crear: extendiendo una clase de Thread implementando la interface Runnable Creacion de threads

23 Ing. E. D'AgostinoINFORMATICA III - 200323 Prioridades De Los threads La prioridad de un thread lo afecta cuando se está ejecutando en relación a otros threads. Ejecución de múltiples threads scheduling algoritmo de scheduling de prioridad fija

24 Ing. E. D'AgostinoINFORMATICA III - 200324 Prioridades de los Threads Todo thread en Java tiene una prioridad en el intervalo : Thread.MIN_PRIORITY( constante que vale 1 ) Thread.MAX_PRIORITY( constante que vale 10 ) Thread.NORM_PRIORITY ( constante que vale 5 )

25 Ing. E. D'AgostinoINFORMATICA III - 200325 Planificación de threads Mantener un hilo de máxima prioridad ejecutándose en todo momento, de acuerdo a la forma en que maneje la concurrencia. La aparición de hilos de alta prioridad puede posponer indefinidamente la ejecución de hilos de prioridades bajas

26 Ing. E. D'AgostinoINFORMATICA III - 200326 Un hilo puede llamar al método yield para dar oportunidad a otros hilos de su misma prioridad a ejecutarse, esto se usa siempre que el manejo de la concurrencia no este basada en quantum. Planificación de threads

27 Ing. E. D'AgostinoINFORMATICA III - 200327 Un hilo se ejecuta hasta que ocurre alguna de las situaciones siguientes: muere. se bloquea para entrada/salida. invoca a sleep. invoca a yield. es desalojado por un hilo de mayor prioridad. hasta que expira su quantum. Planificación de threads

28 Ing. E. D'AgostinoINFORMATICA III - 200328 Un hilo con prioridad más alta que el que se está ejecutando, puede desalojar a éste si: si invoca a resume. si se acaba el período de sleep. si se completa la E/S por la cual se bloqueo. si se invoca notify o notifyAll para un hilo que había invocado wait. Planificación de threads

29 Ing. E. D'AgostinoINFORMATICA III - 200329 Ejemplo: Sincronización de hilos

30 Ing. E. D'AgostinoINFORMATICA III - 200330 Interface Runnable Otra forma de crear un thread es implementando la interface runnable, que nos provee el metodo run, para implementarlo en el thread.

31 Ing. E. D'AgostinoINFORMATICA III - 200331 Ejemplo: Interface Runnable

32 Ing. E. D'AgostinoINFORMATICA III - 200332 Grupos de hilos Permite identificar varios hilos como pertenecientes a un grupo de hilos. La clase ThreadGroup contiene los métodos necesarios para crear y manipular grupos de hilos. El grupo tiene un nombre único. Los grupos se pueden tratar colectivamente.


Descargar ppt "INFORMATICA III ESCUELA DE INGENIERIA ELECTRONICA DEPARTAMENTO DE SISTEMAS E INFORMATICA."

Presentaciones similares


Anuncios Google