Parallele Datenverarbeitung mit Java (3b)

November 10th, 2006 Autor: Phillip Kroll -

Jave Logo BioinformatikAufgabe

Über den eingleisigen Streckenabschnitt AB sollen die Züge so koordiniert fahren, dass kein Unfall entsteht. In den Streckenabschnitt passen maximal 3 Züge gleichzeitig. Sie können annehmen, dass außerhalb des Abschnitts immer genügend neue Züge bereit stehen; nach dem Verlassen des Abschnitts fahren sie rechtzeitig ohne Unfälle weg.

Achtung! Ein Zug kann unterwegs nicht die Richtung wechseln! Rückwärts fahren darf er auch nicht!

Sie können zur Vereinfachung davon ausgehen, dass die Züge, die sich bereits im Streckenabschnitt befinden, nicht aufeinanderfahren können.

Implementieren Sie eine Klasse Zug, die pro Instanz einen Thread startet und zufällig (siehe Math.random()) eine der beiden Methoden GoEast() oder GoWest() aufruft. Hinweis: wo sollten diese Methoden sinnvollerweise implementiert werden: ebenfalls in Zug oder besser woanders? Denken Sie daran, dass mehrere Züge gleichzeitig starten können! Ihre Aufgabe besteht darin, Kollisionen durch Gegenverkehr zu verhindern!

Hinweis: überlegen Sie sich, welche Zustände der Streckenabschnitt annehmen kann. Formulieren Sie erst dieses Zustandsmodell! Setzen Sie es dann in möglichst einfache und möglichst wenige Zustands-Variablen um.

Hinweis: es gibt viele verschiedene Lösungsmöglichkeiten. Sie können frei entscheiden, welche der in der Vorlesung behandelten Konzepte Sie einsetzen wollen. Es kommt jedoch auf die Korrektheit an! Die Lösung muss einerseits frei von Deadlocks sein, darf aber andererseits die Züge nicht unnötig blockieren!

Testen Sie ihr System zuerst mit 10 parallel gestarteten Zügen, später mit 100 und mehr Zügen. Es sollen sinnvolle Ausgaben erzeugt werden, aus denen klar hervorgeht, wo sich jeder Zug (mit einer Nummer oder Namen) jeweils befindet bzw wohin er fährt.

Freiwillige Zusatzaufgabe: sorgen Sie dafür, dass die Züge, die sich innerhalb des Streckenabschnitts befinden, nicht aufeinander fahren können. Sie können dazu das Prinzip des Blockstrecken-Betriebs benutzen, das auch bei der realen Eisenbahn eingesetzt wird.

>> Die Lösung gibt es hier

Bisher keine Kommentare für diesen Eintrag...

0 response(s) to Parallele Datenverarbeitung mit Java (3b)

    Kommentare sind für diesen Beitrag geschlossen.