2
0
Fork 0
freifilligeUebungenSmiths/Threads_003/readme.md

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 String null ist. Ist der String bereits gesetzt, wartet die Methode darauf, dass ein anderer Thread den String über die getString()-Methode liest und wieder zurücksetzt.
  • getString() -- Liest den String aus, gibt das Ergebnis zurück und setzt das Attribut wieder zurück auf null. Wenn kein String vorhanden ist (d.h. wenn das Attribut bereits null ist), wartet die Methode, bis ein anderer Thread mit setString(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.