Java Reference
In-Depth Information
Synchronisation des Datenzugriffs : In parallelen Programmen kann es zu „merkwürdigen“ und
schwer zu findenden Fehler kommen. Grund hierfür ist, dass parallele Programme nicht-determi-
nistisch und nicht-determiniert sein können, d.h. bei mehrmaligem Aufruf desselben Programms
unter denselben Startbedingungen sind unterschiedliche Ergebnisse möglich. Verantwortlich hierfür
ist der interne Scheduler, für den nicht vorhersagbar ist, wann er welchem Thread den Prozessor zu-
teilt. Führt bspw. ein selbstständiger Hamster die Anweisung if (kornDa()) nimm(); aus, kann
es zu einem Fehler kommen, da bei einem Thread-Wechsel nach dem Testbefehl später eventuell gar
kein Korn mehr auf der Kachel liegt, da es bereits ein anderer Hamster gefressen hat. Zur Vermei-
dung derartiger Probleme ist es in Java möglich, Aufrufe von Methoden mittels der synchronized -
Anweisung zu synchronisieren .
Synchronisation des Schedulings : Wenn mehrere selbstständige Hamster gemeinsam ein Problem
lösen, müssen sie manchmal während ihrer Aktionen auf andere Hamster warten, bis eine bestimmte
Bedingung erfüllt ist und sie von diesen darüber informiert werden. Hierzu stellt Java allen Objekten
die Methoden wait und notify zur Verfügung.
Deadlocks : Die Hamster könnten „verhungern“, wenn sie alle auf die Erfüllung bestimmter Bedin-
gungen warten und keiner mehr aktiv ist. Solche Situationen werden Deadlocks genannt. Sie gilt es
natürlich zu vermeiden bzw. zu erkennen.
Realisierung und Visualisierung klassischer Synchronisationsprobleme : Die Konzepte der par-
allelen Programmierung werden anhand zahlreicher klassischer Synchronisationsprobleme, die auf
die Hamster-Welt übertragen werden, demonstriert und visualisiert. Bspw. sitzt beim „Hamster-
Philosophen-Problem“ eine bestimmte Anzahl an Philosophen-Hamstern um einen runden Tisch.
Jeder Hamster teilt sich mit seinen beiden Nachbarn je eine Gabel, die durch Körner repräsentiert
werden. Zum Essen werden immer zwei Gabeln benötigt. Um nicht zu verhungern, müssen sich die
Hamster mit ihren Nachbarn abstimmen.
18.3 Algorithmen und Datenstrukturen
Die Meinungen, inwieweit heutzutage noch klassische Algorithmen und Datenstrukturen, wie Sor-
tier-, Such-, Baum-, Graphen-, Kompressions- oder Mustererkennungsalgorithmen, in der Program-
mierausbildung vorgestellt und analysiert werden sollen, gehen auseinander. Ich halte dies jedoch
für sehr wichtig. Sicher gibt es heutzutage Programmsammlungen und Klassenbibliotheken, in de-
nen alle bedeutenden Algorithmen und Datenstrukturen fertig implementiert zur Verfügung gestellt
werden. Aber durch das Kennenlernen der zugrunde liegenden Konzepte können Programmieran-
fänger Kenntnisse und Erfahrungen beim Algorithmenentwurf sammeln und diese nutzen, wenn sie
selbst Algorithmen zur Lösung bestimmter Probleme entwerfen müssen.
Mit dieser Thematik setzt sich der vierte Teil des Java-Hamster-Modells auseinander. Das Modell
und insbesondere seine Visualisierung, d.h. das Hamster-Territorium und die Aktionen der Hamster,
werden genutzt, um mit entsprechenden Hamster-Programmen die Konzepte und Funktionsweisen
wichtiger Algorithmen und Datenstrukturen zu demonstrieren. Das Java-Hamster-Modell wird also
zur sogenannten Algorithmenvisualisierung oder Algorithmenanimation eingesetzt.
Das Problem ist nämlich, dass sich die Dynamik des Verhaltens von komplexen Algorithmen in der
traditionellen Darstellung als statischer Text unterstützt durch wenige Bildern nur schwer vermitteln
lässt. Genau hier helfen das Java-Hamster-Modell und der Hamster-Simulator. Durch die Aktionen
der Hamster lassen sich bestimmte Vorgänge im Territorium demonstrieren und in Kombination
Search WWH ::




Custom Search