Lösungsmöglichkeit für den Posten Fäden

Wie gewohnt finden Sie hier wieder eine mögliche Lösung zu diesem Posten. Wir haben uns dabei für die einfachste Lösung entschieden. Schauen Sie sich doch einfach einmal die drei Implementationen Fractal, Mandelbrot und Julia an. Sie werden merken, dass wir die beiden konkreten Klassen Mandelbrot und Julia überhaupt nicht verändert haben. Nur in der Klasse Fractal haben wir 4 Zeilen Code hinzufügen müssen, um sämtliche Änderungen zu implementieren. Zuerst haben wir gleich nach dem Klassennamen angegeben, das Fractal das Interface Runnable implementiert. Dann brauchten wir nur noch eine Methode public void run() zu implementieren, die draw() aufruft. Fertig!

Hier kommen die Vorzüge der objekt-orientierten Programmierung voll zum Zug. Alleine durch die Zeile «implements Runnable» wird die Klasse Fractal (und damit auch all ihre Abkömmlinge Mandelbrot und Julia) automatisch als Thread ausführbar. Es muss nur noch die Methode run implementiert werden. Diese muss im Prinzip nichts anderes machen, als ein Fraktal zu zeichnen. Da diese Aufgabe schon von der Methode draw erledigt wird, können wir draw einfach aufrufen. Eine andere Möglichkeit wäre gewesen, die Methode draw in run umzubenennen. Dadurch hätten wir aber auch Mandelbrot und Julia verändern müssen. In einem grösseren Projekt könnte ein solches Vorgehen zur Folge haben, dass einige Dutzend Klassen verändert werden müssten. Je mehr Änderungen aber nötig sind, desto schneller werden auch Fehler eingebaut.

Übrigens: auch bei dieser Lösung sind den eigentlichen Dateinamen drei Grossbuchstaben (THD für Threads) vorangestellt. Wenn Sie mit diesen Dateien weiterarbeiten wollen, müssen Sie nach dem Kopieren diese drei Buchstaben aus den Namen entfernen.


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