2022-10-21 09:40:02 +02:00
|
|
|
# PP-2022WS-PF1
|
|
|
|
|
2022-10-21 09:51:03 +02:00
|
|
|
Pflichtübung 1 von PP im WS 2022.
|
|
|
|
|
|
|
|
Fällig: *Donnerstag, 27. Oktober 2022, 12:00*
|
|
|
|
|
|
|
|
Bauen Sie die (synchronisierten) dinierenden Philosophen um, so dass Bedingungsvariablen benutzt werden:
|
|
|
|
|
|
|
|
- Jeder Philosoph ist ein Thread und besitzt einen Warteraum, in dem die Nachbarphilosophen darauf warten, dass er seine
|
|
|
|
Stäbchen freigibt.
|
|
|
|
- Der Name der Klasse muss io.dama.ffi.parcoord.dining.cond.Philosopher sein.
|
|
|
|
- Philosoph implementiert das Interface io.dama.ffi.parcoord.dining.cond.IPhilosopher
|
|
|
|
- Jeder Philosoph hat je eine Referenz auf seinen linken und rechten Nachbarn. setLeft(IPhilosopher left); setRight(
|
|
|
|
IPhilosopher right);
|
|
|
|
- Der Tisch wird durch ein ReentrantLock-Objekt (Interface Lock) repräsentiert. Alle Philosophen müssen den Tisch
|
|
|
|
verwenden, wenn sie beginnen zu essen. Eine Referenz auf den Tisch kann mit dem Setter übergeben werden: setTable(Lock
|
|
|
|
table);
|
|
|
|
- Möchte ein Philosoph beginnen zu essen, prüft er, ob sein linker Nachbar oder sein rechter Nachbar isst; er erwartet
|
|
|
|
den Moment, in dem beide nicht essen. Dann beginnt er zu essen.
|
|
|
|
- Wenn ein Philosoph denkt, isst er nicht und signalisiert jeweils seinem linken Nachbarn und seinem rechten Nachbarn,
|
|
|
|
dass er nicht isst.
|
|
|
|
|
|
|
|
Geben Sie eine Java-Datei (also nur den Quellcode) für die Klasse
|
|
|
|
|
|
|
|
io.dama.ffi.parcoord.dining.cond.Philosopher
|
|
|
|
|
|
|
|
ab.
|
|
|
|
|
|
|
|
## Mitglieder:
|
|
|
|
|
|
|
|
- Aya Bakkar
|
|
|
|
- Thomas Martin
|
|
|
|
- Eren Saglam
|
|
|
|
- Jonas Wächter
|
|
|
|
- Yan Wittmann
|