Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Monitore in Java++ Aufgabe 2 von Markus Schlebusch Christoph Reinboth Sebastian Zok Johannes Stolte Norman Zuther.

Ähnliche Präsentationen


Präsentation zum Thema: "Monitore in Java++ Aufgabe 2 von Markus Schlebusch Christoph Reinboth Sebastian Zok Johannes Stolte Norman Zuther."—  Präsentation transkript:

1 Monitore in Java++ Aufgabe 2 von Markus Schlebusch Christoph Reinboth Sebastian Zok Johannes Stolte Norman Zuther

2 Übersicht Einleitung Syntax Beispiel J++ Umsetzung J++ -> Java Das lebende Beispiel Vererbung unter Monitoren und Conditions

3 Was ist ein Monitor Ein Monitor organisiert den Zugriff auf eine von mehreren Threads gemeinsam genutzte Ressource Die Threads können nur über die Schnittstelle des Monitors auf die Ressource zugreifen Vorausgesetzt die Konsistenz der Ressource bleibt erhalten Sämtliche öffentlichen Methoden bilden zusammen einen kritischen Bereich

4 Was ist ein Monitor Wartet ein Thread auf das Eintreten einer Bedingung, so muss er zum Warten den kritischen Abschnitt verlassen. Wird ein Thread erweckt, so begibt er sich sofort wieder in den kritischen Abschnitt des Monitors, in dem er gewartet hat. Er wird durch einen Thread erweckt, der die Bedingung erfüllt hat. Dieser muss danach den kritischen Abschnitt verlassen

5 Bedingungen Eine Bedingung (Condition) ist ein boolscher Ausdruck Bewahrt den Monitor vor fehlerhaften oder inkonsistenten Zuständen Ist die Bedingung bereits erfüllt wartet der Thread nicht Warten mehrere Thread auf eine Bedingung, wird zufällig einer dieser ausgewählt

6 Bedingungen Wird fälschlicherweise die Erfüllung einer Bedingung signalisiert, wird eine Exception geworfen (Inkonsistenter Zustand) Ein Monitor löst nicht die Probleme des Starvation oder des Deadlocks!

7 Syntax Beispiel J++ monitor Buffer // <-- (1) [extends monitor/class implements (monitor)interface]{// <-- (2) int size = 0; int max = 50; Condition notFull(size0);

8 Syntax Beispiel J++ 1. Mit monitor wird eine neue Monitor- Klasse generiert. 2. Es kann von Monitoren oder Klassen geerbt und Monitor- oder normale Interfaces implementiert werden. 3. Dieser Monitor enthält Bedingungen(Condition), die einen boolschen Ausdruck enthalten.

9 Syntax Beispiel J++ public Buffer() { notFull.setExceptionText("Someone has not put something " + "into the buffer, but he/she has signaled it."); // <-- (4) notEmpty.setExceptionText("Someone has not get something " + "from the buffer, but he/she has signaled it."); } 4. Hier kann ein Text eingegeben werden, der in der Exception enthalten ist. Diese wird geworfen wenn eine Bedingung signalisiert wurde, obwohl sie nicht erfüllt ist.

10 Syntax Beispiel J++ public void put(){ notFull.await();// <-- (5) this.size++; notEmpty.signal();// <-- (6) } public void get(){ notEmpty.await(); this.size--; notFull.signal(); }

11 Syntax Beispiel J++ 5. Hier wird auf eine Bedingung gewartet. 6. Hier wird eine Bedingung signalisiert.

12 Umsetzung J++ -> Java

13 Monitor: Dies ist die root- Klasse aller Monitore. Semaphore: Dies kann eine Klasse aus den Java-Bibliotheken sein, hier wird sie nochmal ausführlich gezeigt. Condition: Eine Condition stellt die Bedingung da, auf die gewartet oder signalisiert werden kann. ConditionNotFullFilledException: Wird eine eine nicht wahre Bedingung signalisiert, so wird diese Exception geworfen.

14 Das lebende Beispiel

15 Vererbung unter Monitoren und Conditions class A extends [monitor] B compileError class A implements [monitorinterface] B compileError interface A extends [monitorinterface] B compileError monitor A extends [class] B geht monitor A extends [monitor] B geht monitor A implements [interface] B compileError monitor A implements [monitorinterface] B geht monitorinterface A extends [monitorinterface] B geht monitorinterface A extends [interface] B geht

16 Fragen


Herunterladen ppt "Monitore in Java++ Aufgabe 2 von Markus Schlebusch Christoph Reinboth Sebastian Zok Johannes Stolte Norman Zuther."

Ähnliche Präsentationen


Google-Anzeigen