![]() |
Cluster PraktikumSommersemester 2007Thomas Moschny, Guido Malpohl, Gábor Szeder, Prof. Walter F. Tichy |
|
Inhalt
Links
Powered by |
Blatt 8Aufgabe 8: Queues in JavaVorbereitungen
mkdir ~/classes java -version Nun können Sie Java-Quelldateien übersetzen: Anschließend können Sie Ihr Programm so ausführen:javac -d ~/classes HelloWorld.java java HelloWorld WarteschlangeEs soll eine Warteschlange implementiert werden mit einer festen, bei ihrer Konstruktion anzugebenden Größe. Die Warteschlange kann beliebige Elemente (also Objekte der Klasse Object) aufnehmen. Es gibt je eine Methode zum Einstellen und eine Methode zum Herausnehmen eines Objektes. Beide Methoden sollen blockieren, wenn sie ihre Aufgabe derzeit nicht erfüllen können, weil die Schlange voll bzw. leer ist. Zuerst eingestellte Objekte werden auch zuerst wieder entnommen. Das Einstellen von ungültigen Referenzen (null) ist ausdrücklich erlaubt. Sie müssen für die Klasse Queue also Methoden mit ungefähr folgenden Signaturen (zuzüglich etwaiger Modifizierer und Deklarationen von geworfenen Ausnahmen) implementieren: Queue(int size) /* construct queue of size size */ boolean isFull() /* true, if queue cannot accept more elements */ boolean isEmoty() /* true, if no elements queued (anymore) */ void enqueue(Object item) /* add element */ Object dequeue() /* remove (and return) element */ Hinweis: Benutzen Sie nicht einfach eine der Containerklassen aus java.util, sondern denken Sie sich eine eigene Implementierung aus!! Die Warteschlange soll in einem Programm mit vier Threads verwendet werden. Zwei Producer-Threads stellen Integer-Werte von 100...199 bzw. 200..299 in die Warteschlange ein, und zwei Consumer-Threads entnehmen diese Werte wieder aus der Schlange und geben sie aus. Das Programm sieht im Wesentlichen so aus:
Kopieren Sie diesen Quelltext in eine Datei TestQueue.java im Ordner cp/sync, den Sie ggf. vorher anlegen. Sie müssen jetzt noch die Warteschlange selbst, d.h. die Klasse Queue in der Datei cp/sync/Queue.java ergänzen. Das fertige Programm soll nicht blockieren und alle Werte (100..299) ausgeben. Testen Sie dieses für verschiedenen Größen der Warteschlage, insbesondere für eine Schlange, die nur ein Element aufnehmen kann. Benutzen Sie zur Abgabe der Lösung wie immer den Praktomaten! Am einfachsten ist, es eine ZIP-Datei mit den beiden Quelldateien inklusive Verzeichnisstruktur einzureichen. |
||||||||||||||||||||||||||||||||||||||||||||||||
|
Fragen und Anregungen bitte an das Praktikumsteam. Entwurf und Gestaltung der Seiten Bernhard Haumacher und Thomas Moschny. Letzte Änderung: Fri Jun 22 22:06:11 CEST 2007 |
|||||||||||||||||||||||||||||||||||||||||||||||||