INFORMATICA III

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

description

INFORMATICA III. ESCUELA DE INGENIERIA ELECTRONICA. DEPARTAMENTO DE SISTEMAS E INFORMATICA. CONCURRENCIA THREADS CONCEPTOS BÁSICOS SINCRONIZACIÓN PRIORIZACIÓN GRUPOS DE THREADS. Concurrencia. En el mundo real pasan muchas cosas a la vez - PowerPoint PPT Presentation

Transcript of INFORMATICA III

INFORMATICA III

ESCUELA DE INGENIERIA ELECTRONICA

DEPARTAMENTO DE SISTEMAS E INFORMATICA

• CONCURRENCIA

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

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

Ing. E. D'Agostino INFORMATICA III - 2003 4

THREAD / HILO

Un programa

Un thread

Un thread es un flujo de control secuencialen un programa.

Ing. E. D'Agostino INFORMATICA III - 2003 5

MULTIPLES THREADS

Un programa

dos threads

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

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)

Ing. E. D'Agostino INFORMATICA III - 2003 8

Sirven para aislar tareas

Java.lang.Thread

THREAD

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

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)

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

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

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.

Ing. E. D'Agostino INFORMATICA III - 2003 14

PRODUCTOR - CONSUMIDOR

• Problema tipo que ejemplifica la necesidad de sincronización

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

Ing. E. D'Agostino INFORMATICA III - 2003 16

Sincronización

Thread

bloquea

Thread

•Solo un thread por vez puede acceder a un objeto

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.

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.

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

Ing. E. D'Agostino INFORMATICA III - 2003 20

Métodos sincronizados

Métodos sincronizados

Instancia(bloquean objetos)

Clase(bloquean clases)

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.

Ing. E. D'Agostino INFORMATICA III - 2003 22

Un thread se puede crear:extendiendo una clase de Threadimplementando la interface Runnable

Creacion de threads

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

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)

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

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

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

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

Ing. E. D'Agostino INFORMATICA III - 2003 29

Ejemplo:

Sincronización de hilos

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.

Ing. E. D'Agostino INFORMATICA III - 2003 31

Ejemplo:

Interface Runnable

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.