Tips und Hinweise

... zu folgenden Themen:

  1. Testprogramm
  2. Ausgangsbasis
  3. Vorgehen
  4. Originaldokumentation

Testprogramm

Sie verwenden dasselbe Testprogramm wie beim Posten «Fäden». Alle Schnittstellen bleiben unverändert und müssen auch gar nicht angetastet werden.

Ausgangsbasis

Die unten aufgeführten Klassen bilden eine Ausgangsbasis für diesen Posten. Wenn Sie keine eigene Lösung für die vorangehenden Posten gefunden haben, können Sie diese Dateien übernehmen. Kopieren Sie sie zuerst in Ihr Arbeitsverzeichnis; danach müssen Sie jeweils die ersten drei Buchstaben (THD) der Dateinamen löschen.

Vorgehen

Sie haben die vorhergehende Seite über die Synchronisation in Java gelesen und wissen, dass es prinzipiell zwei Möglichkeiten zur Synchronisation gibt. Sie wissen von der Einführung her auch, wo das Problem liegt. Sie können nun zwischen folgenden beiden Vorgehen wählen:

  1. Sie packen das Problem gleich bei der Wurzel und korrigieren unsere Implementation der Klasse FCanvas. Sie können diese Klasse zu sich ins Arbeitsverzeichnis kopieren, wie Sie es mit den Lösungsvorschlägen gemacht haben. Wenn Sie nun FCanvas kompilieren, wird der Interpreter beim starten des Testprogrammes Ihre Klasse laden. Dies geschieht deshalb, weil Sie in Ihrer CLASSPATH-Variable das aktuelle Verzeichnis (den Punkt . ) zuerst anführen. Sollten Sie mit Ihrer Lösung nicht zufrieden sein, so können Sie einfach die Datei FCanvas.class aus Ihrem Arbeitsverzeichnis löschen. Dann wird nämlich automatisch wieder die ursprüngliche (unsere «fehlerhafte») Version aktiv.
  2. Sie beheben unseren Fehler, indem Sie ein Objekt sperren, das von den Klassen Mandelbrot und Julia aus erreichbar ist (z.B. canvas). Versuchen Sie dabei den kritischen Abschnitt so eng wie möglich einzukreisen, um dann nur diesen zu schützen.

Originaldokumentation


Kritische Abschnitte - Synchronisation in Java - Tips und Hinweise - Lösungsmöglichkeit
OOP - Werkzeuge - Referenzen - Fäden - Synchronisation - Applets - Dokumentation
Werkstatt - Bibliographie