Resumen T3 Monitors (2015)

Resumen Español
Universidad Universidad Politécnica de Cataluña (UPC)
Grado Ciencias y Tecnologías de Telecomunicación - 2º curso
Asignatura AST
Año del apunte 2015
Páginas 2
Fecha de subida 23/02/2015
Descargas 59
Subido por

Vista previa del texto

Carlos Angulo AST Resum T3 T3 Monitors Partim d’una classe que implementa un Runnable i que permet l’execució de Threads En su método run() haura d’entrar a ZC i sortir Monitors Problema: Necessitat d’entrar i sortir a ZC amb exclusió mutua Solució: Objecte de tipus Monitor que mitjançant els seus mètodes “atomitzi” el programa Construcció que encapsula una estructura de dades on els mètodes s’executen en exclusió mútua (MUTEX) Public class NomClasseThread extends Thread{ Public void run(){ //entrar ZC //accions que ha de fer el Thread mentre s’executi //sortir ZC } } Les dades només son accessibles mitjançant mètodes MUTEX esta implícita en el Monitor Problema: Pot ser que el Thread es quedi infinitament dintre de ZC Solució: aturar-lo i despertar-lo quan sigui necessari. En funció d’una Condició Necessitat de sincronització • • Mètodes Bloquejant: Mètodes que aturaran un Thread perquè no es compleix una condició Mètodes Alliberadors: Mètodes que despertarà/n un/s Thread/s que s'havien aturat Ara el programa esperarà per a una condició, es generaran cues d’espera de Threads Tindrem variables de condició que aturaran o despertaran els monitors Mètodes principals de les variables Condició Mètodes principals de les variables Monitor await Atura incondicionalment el Thread en la variable de condició i deixa el monitor lliure Els podrem posar en el run() o en els mètodes que tinguin MUTEX signal Si hi ha un Thread aturat en Desperta un Si no, no farà res (no té memòria) Lock Entrar ZC signalAll Desperta tots els Threads aturats unLock Sortir ZC La clase que hará de monitor es aquella que ha de gestionar el acceso al recurso compartido. Será un “representante” de las clases que quieran acceder al recurso Las clases que quieren acceder al recurso han de ser Runnable para poder quedarse en espera si el recurso compartido no esta disponible Persona -String: nom Productor (Runnable) Consumidor (Runnable) -String:nomproducto +void:run +void:run Buffer -Queue -ReentrantLock: monitor -Condition: noPlena,noBuida +void:put(); +Object:get(); Resumen AST 1 Carlos Angulo AST Resum T3 T3 Monitors Buffer amb monitors i CircularQueue Monitor Natius de Java class Object{ public void wait(){} public void notify(){} public void notifyall(){} } En Java tots els objectes són un monitor amb una variable de condició implícita public void n(){ monitor.lock(); .
.
.
monitor.unlock(); } Resumen AST public synchonized void n(){ } 2 ...