All pastes #813339 Raw Edit

Etwas

public text v1 · immutable
·published 2007-12-12 13:43 UTC
rendered paste body

Ein Problem aus einer langsam aussterbenden Welt: Wir betrachten ein System mit drei 
Rauchern ("smoker") und einem Agenten. Jeder Raucher rollt sich so oft wie möglich eine 
Zigarette und raucht diese anschlieflend. Um eine Zigarette rollen und rauchen zu können 
benötigt ein Raucher drei Zutaten: Tabak ("tobacco"), Papier ("paper") und Streichhölzer 
("matches"). Einer der drei Raucher hat Tabak, ein anderer Papier und der Dritte hat Streich-
hölzer. Der Agent hat eine unendliche Menge von allen drei Dingen. Alle sitzen um einen 
Tisch versammelt. 
Das Verhalten in diesem System ist folgendermaflen: 
1.  Der Agent legt zwei der drei Zutaten auf den Tisch (zuf‰llig ausgew‰hlt). 
2.  Der Raucher, der die fehlende dritte Zutat besitzt, nimmt die beiden Zutaten vom 
Tisch, rollt sich eine Zigarette und raucht sie anschlieflend (das kostet Zeit!). Wenn er 
mit dem Rauchen fertig ist, signalisiert er dies dem Agenten. 
3.  Der Agent beginnt wieder einen neuen Zyklus --> Schritt 1. 
2.1. Schreiben Sie ein JAVA-Programm, welches das o.g. Systemverhalten mit einem  
Agenten-Thread und drei Smoker-Threads simuliert! Benutzen Sie die JAVA-
Synchronisationsmechanismen (Eintritt in einen Objekt-Monitor mittels "synchronize") und 
die Methoden zur Threadsynchronisation (wait(), notify(), notifyAll()). Die Si-
mulation soll nach einer vorgegebenen Zeit durch den Aufruf der Methode interrupt() 
beendet werden. 
2.2. Testen Sie ihr Programm und dokumentieren Sie die erfolgreiche Simulation durch ge-
eignete Testausgaben!