forked from pr2-lecture/uebungen
1.6 KiB
1.6 KiB
wait und notify benutzen
Lernziel
Thread-Koordination über Condition-Variablen.
Aufgabe
Gehen Sie in das Paket pr2.threads.notifier.
Schreiben Sie eine Klasse Notifier
, die ein einziges String
-Attribut enthält. Sie soll weiterhin zwei Methoden haben:
setString(String string)
-- Diese Methode setzt den String auf einen neuen Wert, aber nur, wenn der Stringnull
ist. Ist der String bereits gesetzt, wartet die Methode darauf, dass ein anderer Thread den String über diegetString()
-Methode liest und wieder zurücksetzt.getString()
-- Liest den String aus, gibt das Ergebnis zurück und setzt das Attribut wieder zurück aufnull
. Wenn kein String vorhanden ist (d.h. wenn das Attribut bereitsnull
ist), wartet die Methode, bis ein anderer Thread mitsetString(String string)
einen String abspeichert.
Schreinben Sie eine Klasse Main
mit einer main
-Methode. Starten Sie zwei Threads, die Strings in einer Notifier
-Instanz abspeichern und drei Threads, die Strings auslesen. Lassen Sie die Threads nach jeder Operation für 200 Millisekunden schlafen.
Verwenden Sie bitte wait
und notify
bzw. notifyAll
, um die Threads entsprechend zu koordinieren.