Angewandte Informatik

Universität Osnabrück , 25.6.2001

Dr. Ute Schmid

letzter Abgabetermin: 2.7.2001, 8:00 Uhr

Elmar Ludwig

Übungen zu Informatik B

Sommersemester 2001

Blatt 10

Dies ist das vorletzte Aufgabenblatt.



Aufgabe 1 (8 Punkte)

Erläutern Sie die folgenden Begriffe:

Wie werden Threads in Java realisiert und was hat das mit dem Interface Runnable zu tun? Erläutern Sie das Programm ThreadDemo aus der Vorlesung.

Aufgabe 2 (2 Punkte)

Erklären Sie Ihrem Tutor das unter Uebung/Blatt10/threads hinterlegte Thread-Beispiel.

Aufgabe 3 (6 Punkte)

Implementieren Sie das in der Vorlesung diskutierte Buchungssystem unter Verwendung von Semaphoren zur Synchronisation als zweistufigen Consumer /Producer -Algorithmus in Java. Erläutern Sie in diesem Zusammenhang die Begriffe ,,kooperierende Prozesse`` und ,,konkurrierende Prozesse``.

Der ,,Leser`` liest aus einer Datei eine Liste von Artikelnummern (eine pro Zeile) und übergibt diese Nummer an den ,,Bucher``, der diese über eine (im Programm feste) HashMap auf einen Artikelnamen und -preis abbildet. Beides soll dann schließlich an den ,,Drucker`` weitergegeben und von diesem auf den Bildschirm ausgegeben werden.

Aufgabe 4 (4 Punkte)

Erklären Sie Ihrem Tutor das zweite Philosophen-Beispiel code/Vl21/Philosopher2.java aus der Vorlesung und speziell den dort verwendeten Synchronisationsmechanismus. Wieso kann es hier keine Deadlocks geben? Wieso kann es dennoch passieren, daß ein Philosoph ,,verhungert``?

Versuchen Sie, in diesem Programm das Problem des ,,Aushungerns`` einzelner Philosophen durch Einführung von unterschiedlichen Prioritäten für die Threads zu lösen. Wann sollte die Priorität eines Philosophen verändert werden?

Gesamtpunkte: 20



Elmar Ludwig
6/22/2001