![Page 1: INFORMATICA III ESCUELA DE INGENIERIA ELECTRONICA DEPARTAMENTO DE SISTEMAS E INFORMATICA](https://reader036.vdocuments.pub/reader036/viewer/2022081501/5665b4641a28abb57c9124ee/html5/thumbnails/1.jpg)
INFORMATICA III
ESCUELA DE INGENIERIA ELECTRONICA
DEPARTAMENTO DE SISTEMAS E INFORMATICA
![Page 2: INFORMATICA III ESCUELA DE INGENIERIA ELECTRONICA DEPARTAMENTO DE SISTEMAS E INFORMATICA](https://reader036.vdocuments.pub/reader036/viewer/2022081501/5665b4641a28abb57c9124ee/html5/thumbnails/2.jpg)
• CONCURRENCIA
• THREADS– CONCEPTOS BÁSICOS– SINCRONIZACIÓN – PRIORIZACIÓN– GRUPOS DE THREADS
![Page 3: INFORMATICA III ESCUELA DE INGENIERIA ELECTRONICA DEPARTAMENTO DE SISTEMAS E INFORMATICA](https://reader036.vdocuments.pub/reader036/viewer/2022081501/5665b4641a28abb57c9124ee/html5/thumbnails/3.jpg)
Ing. E. D'Agostino INFORMATICA III - 2003 3
Concurrencia
En el mundo real pasan muchas cosas a la vezEn la modelizacion de software también pueden
ocurrir muchas cosas concurrentemente:Con varias computadoras se pueden ejecutar múltiples
programasCon una sola computadora se pueden simular la
ejecución paralela de varias actividadesmúltiples hilos de ejecución comparten el uso de un procesador
![Page 4: INFORMATICA III ESCUELA DE INGENIERIA ELECTRONICA DEPARTAMENTO DE SISTEMAS E INFORMATICA](https://reader036.vdocuments.pub/reader036/viewer/2022081501/5665b4641a28abb57c9124ee/html5/thumbnails/4.jpg)
Ing. E. D'Agostino INFORMATICA III - 2003 4
THREAD / HILO
Un programa
Un thread
Un thread es un flujo de control secuencialen un programa.
![Page 5: INFORMATICA III ESCUELA DE INGENIERIA ELECTRONICA DEPARTAMENTO DE SISTEMAS E INFORMATICA](https://reader036.vdocuments.pub/reader036/viewer/2022081501/5665b4641a28abb57c9124ee/html5/thumbnails/5.jpg)
Ing. E. D'Agostino INFORMATICA III - 2003 5
MULTIPLES THREADS
Un programa
dos threads
![Page 6: INFORMATICA III ESCUELA DE INGENIERIA ELECTRONICA DEPARTAMENTO DE SISTEMAS E INFORMATICA](https://reader036.vdocuments.pub/reader036/viewer/2022081501/5665b4641a28abb57c9124ee/html5/thumbnails/6.jpg)
Ing. E. D'Agostino INFORMATICA III - 2003 6
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
![Page 7: INFORMATICA III ESCUELA DE INGENIERIA ELECTRONICA DEPARTAMENTO DE SISTEMAS E INFORMATICA](https://reader036.vdocuments.pub/reader036/viewer/2022081501/5665b4641a28abb57c9124ee/html5/thumbnails/7.jpg)
Ing. E. D'Agostino INFORMATICA III - 2003 7
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)
![Page 8: INFORMATICA III ESCUELA DE INGENIERIA ELECTRONICA DEPARTAMENTO DE SISTEMAS E INFORMATICA](https://reader036.vdocuments.pub/reader036/viewer/2022081501/5665b4641a28abb57c9124ee/html5/thumbnails/8.jpg)
Ing. E. D'Agostino INFORMATICA III - 2003 8
Sirven para aislar tareas
Java.lang.Thread
THREAD
![Page 9: INFORMATICA III ESCUELA DE INGENIERIA ELECTRONICA DEPARTAMENTO DE SISTEMAS E INFORMATICA](https://reader036.vdocuments.pub/reader036/viewer/2022081501/5665b4641a28abb57c9124ee/html5/thumbnails/9.jpg)
Ing. E. D'Agostino INFORMATICA III - 2003 9
La concurrencia es natural en OOAda y Simula 67 ya soportaban concurrenciaJava es único entre los lenguajes de propósitos
generales que pone primitivas de concurrencia a disposición del programador
Programación concurrente OO
![Page 10: INFORMATICA III ESCUELA DE INGENIERIA ELECTRONICA DEPARTAMENTO DE SISTEMAS E INFORMATICA](https://reader036.vdocuments.pub/reader036/viewer/2022081501/5665b4641a28abb57c9124ee/html5/thumbnails/10.jpg)
Ing. E. D'Agostino INFORMATICA III - 2003 10
Aplicaciones concurrentes
Descargas de grandes archivos de la WWW
Construcción de interfases gráficas
Recolección de basura de Java (garbage colector)
![Page 11: INFORMATICA III ESCUELA DE INGENIERIA ELECTRONICA DEPARTAMENTO DE SISTEMAS E INFORMATICA](https://reader036.vdocuments.pub/reader036/viewer/2022081501/5665b4641a28abb57c9124ee/html5/thumbnails/11.jpg)
Ing. E. D'Agostino INFORMATICA III - 2003 11
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
![Page 12: INFORMATICA III ESCUELA DE INGENIERIA ELECTRONICA DEPARTAMENTO DE SISTEMAS E INFORMATICA](https://reader036.vdocuments.pub/reader036/viewer/2022081501/5665b4641a28abb57c9124ee/html5/thumbnails/12.jpg)
Ing. E. D'Agostino INFORMATICA III - 2003 12
Estados de hilos: ciclo de vidanacido
listo
ejecución
muerto
dormido suspendidoen 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
Invocación de un método
Cumplio condición
ejecutable
parado
![Page 13: INFORMATICA III ESCUELA DE INGENIERIA ELECTRONICA DEPARTAMENTO DE SISTEMAS E INFORMATICA](https://reader036.vdocuments.pub/reader036/viewer/2022081501/5665b4641a28abb57c9124ee/html5/thumbnails/13.jpg)
Ing. E. D'Agostino INFORMATICA III - 2003 13
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.
![Page 14: INFORMATICA III ESCUELA DE INGENIERIA ELECTRONICA DEPARTAMENTO DE SISTEMAS E INFORMATICA](https://reader036.vdocuments.pub/reader036/viewer/2022081501/5665b4641a28abb57c9124ee/html5/thumbnails/14.jpg)
Ing. E. D'Agostino INFORMATICA III - 2003 14
PRODUCTOR - CONSUMIDOR
• Problema tipo que ejemplifica la necesidad de sincronización
![Page 15: INFORMATICA III ESCUELA DE INGENIERIA ELECTRONICA DEPARTAMENTO DE SISTEMAS E INFORMATICA](https://reader036.vdocuments.pub/reader036/viewer/2022081501/5665b4641a28abb57c9124ee/html5/thumbnails/15.jpg)
Ing. E. D'Agostino INFORMATICA III - 2003 15
Escenarios productor /consumidorUn thread escribe datos en un archivoOtro thread lee datos del archivo
Comparten recursos debo sincronizarlos
Sincronización
![Page 16: INFORMATICA III ESCUELA DE INGENIERIA ELECTRONICA DEPARTAMENTO DE SISTEMAS E INFORMATICA](https://reader036.vdocuments.pub/reader036/viewer/2022081501/5665b4641a28abb57c9124ee/html5/thumbnails/16.jpg)
Ing. E. D'Agostino INFORMATICA III - 2003 16
Sincronización
Thread
bloquea
Thread
•Solo un thread por vez puede acceder a un objeto
![Page 17: INFORMATICA III ESCUELA DE INGENIERIA ELECTRONICA DEPARTAMENTO DE SISTEMAS E INFORMATICA](https://reader036.vdocuments.pub/reader036/viewer/2022081501/5665b4641a28abb57c9124ee/html5/thumbnails/17.jpg)
Ing. E. D'Agostino INFORMATICA III - 2003 17
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.
![Page 18: INFORMATICA III ESCUELA DE INGENIERIA ELECTRONICA DEPARTAMENTO DE SISTEMAS E INFORMATICA](https://reader036.vdocuments.pub/reader036/viewer/2022081501/5665b4641a28abb57c9124ee/html5/thumbnails/18.jpg)
Ing. E. D'Agostino INFORMATICA III - 2003 18
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.
![Page 19: INFORMATICA III ESCUELA DE INGENIERIA ELECTRONICA DEPARTAMENTO DE SISTEMAS E INFORMATICA](https://reader036.vdocuments.pub/reader036/viewer/2022081501/5665b4641a28abb57c9124ee/html5/thumbnails/19.jpg)
Ing. E. D'Agostino INFORMATICA III - 2003 19
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
![Page 20: INFORMATICA III ESCUELA DE INGENIERIA ELECTRONICA DEPARTAMENTO DE SISTEMAS E INFORMATICA](https://reader036.vdocuments.pub/reader036/viewer/2022081501/5665b4641a28abb57c9124ee/html5/thumbnails/20.jpg)
Ing. E. D'Agostino INFORMATICA III - 2003 20
Métodos sincronizados
Métodos sincronizados
Instancia(bloquean objetos)
Clase(bloquean clases)
![Page 21: INFORMATICA III ESCUELA DE INGENIERIA ELECTRONICA DEPARTAMENTO DE SISTEMAS E INFORMATICA](https://reader036.vdocuments.pub/reader036/viewer/2022081501/5665b4641a28abb57c9124ee/html5/thumbnails/21.jpg)
Ing. E. D'Agostino INFORMATICA III - 2003 21
Creacion de threads
Crear un thread Configurarlo : nombre, prioridad,etc.Ejecutarlo :
invocar el método start, éste invoca al método runcuando run devuelve el control el thread ha
terminado.
![Page 22: INFORMATICA III ESCUELA DE INGENIERIA ELECTRONICA DEPARTAMENTO DE SISTEMAS E INFORMATICA](https://reader036.vdocuments.pub/reader036/viewer/2022081501/5665b4641a28abb57c9124ee/html5/thumbnails/22.jpg)
Ing. E. D'Agostino INFORMATICA III - 2003 22
Un thread se puede crear:extendiendo una clase de Threadimplementando la interface Runnable
Creacion de threads
![Page 23: INFORMATICA III ESCUELA DE INGENIERIA ELECTRONICA DEPARTAMENTO DE SISTEMAS E INFORMATICA](https://reader036.vdocuments.pub/reader036/viewer/2022081501/5665b4641a28abb57c9124ee/html5/thumbnails/23.jpg)
Ing. E. D'Agostino INFORMATICA III - 2003 23
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
![Page 24: INFORMATICA III ESCUELA DE INGENIERIA ELECTRONICA DEPARTAMENTO DE SISTEMAS E INFORMATICA](https://reader036.vdocuments.pub/reader036/viewer/2022081501/5665b4641a28abb57c9124ee/html5/thumbnails/24.jpg)
Ing. E. D'Agostino INFORMATICA III - 2003 24
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)
![Page 25: INFORMATICA III ESCUELA DE INGENIERIA ELECTRONICA DEPARTAMENTO DE SISTEMAS E INFORMATICA](https://reader036.vdocuments.pub/reader036/viewer/2022081501/5665b4641a28abb57c9124ee/html5/thumbnails/25.jpg)
Ing. E. D'Agostino INFORMATICA III - 2003 25
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
![Page 26: INFORMATICA III ESCUELA DE INGENIERIA ELECTRONICA DEPARTAMENTO DE SISTEMAS E INFORMATICA](https://reader036.vdocuments.pub/reader036/viewer/2022081501/5665b4641a28abb57c9124ee/html5/thumbnails/26.jpg)
Ing. E. D'Agostino INFORMATICA III - 2003 26
• 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
![Page 27: INFORMATICA III ESCUELA DE INGENIERIA ELECTRONICA DEPARTAMENTO DE SISTEMAS E INFORMATICA](https://reader036.vdocuments.pub/reader036/viewer/2022081501/5665b4641a28abb57c9124ee/html5/thumbnails/27.jpg)
Ing. E. D'Agostino INFORMATICA III - 2003 27
• 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
![Page 28: INFORMATICA III ESCUELA DE INGENIERIA ELECTRONICA DEPARTAMENTO DE SISTEMAS E INFORMATICA](https://reader036.vdocuments.pub/reader036/viewer/2022081501/5665b4641a28abb57c9124ee/html5/thumbnails/28.jpg)
Ing. E. D'Agostino INFORMATICA III - 2003 28
• 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
![Page 29: INFORMATICA III ESCUELA DE INGENIERIA ELECTRONICA DEPARTAMENTO DE SISTEMAS E INFORMATICA](https://reader036.vdocuments.pub/reader036/viewer/2022081501/5665b4641a28abb57c9124ee/html5/thumbnails/29.jpg)
Ing. E. D'Agostino INFORMATICA III - 2003 29
Ejemplo:
Sincronización de hilos
![Page 30: INFORMATICA III ESCUELA DE INGENIERIA ELECTRONICA DEPARTAMENTO DE SISTEMAS E INFORMATICA](https://reader036.vdocuments.pub/reader036/viewer/2022081501/5665b4641a28abb57c9124ee/html5/thumbnails/30.jpg)
Ing. E. D'Agostino INFORMATICA III - 2003 30
Interface Runnable
• Otra forma de crear un thread es implementando la interface runnable, que nos provee el metodo run, para implementarlo en el thread.
![Page 31: INFORMATICA III ESCUELA DE INGENIERIA ELECTRONICA DEPARTAMENTO DE SISTEMAS E INFORMATICA](https://reader036.vdocuments.pub/reader036/viewer/2022081501/5665b4641a28abb57c9124ee/html5/thumbnails/31.jpg)
Ing. E. D'Agostino INFORMATICA III - 2003 31
Ejemplo:
Interface Runnable
![Page 32: INFORMATICA III ESCUELA DE INGENIERIA ELECTRONICA DEPARTAMENTO DE SISTEMAS E INFORMATICA](https://reader036.vdocuments.pub/reader036/viewer/2022081501/5665b4641a28abb57c9124ee/html5/thumbnails/32.jpg)
Ing. E. D'Agostino INFORMATICA III - 2003 32
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.