4. Fäden

OOPWerkzeugeReferenzenFädenSynchronisationAppletsDokumentation


Fäden

Fäden? Was haben Fäden mit einer Programmiersprache zu tun? Nun, denken Sie einmal nicht an Garn und Nadel sondern im übertragenen Sinn an den roten Faden einer Handlung! Genau um solche Fäden geht es in diesem Posten. Ein Programm hat auch einen roten Faden, eine Haupthandlung oder ein Hauptprogramm. Daneben gibt es aber viele Unterprogramme und Hilfsprozeduren, die sich ihrerseits wieder wie Fäden durch die Handlung des Hauptprogrammes ziehen können.

Da in Java jede Handlung durch eine Methode eines Objektes repräsentiert wird, liegt es nahe die Objekte als Akteure der Handlung aufzufassen. Wie in einem Theaterstück können auch in Java die verschiedenen Akteure gleichzeitig tätig sein und ihre eigenen "Fäden" im Netz der Gesamthandlung spinnen. Faden heisst auf Englisch Thread, und um Threads geht es in diesem Posten. Was Threads sind, erfahren Sie in den unten aufgeführten Materialien. Soviel vorweg: es handelt sich um selbständige Teilprogramme, die gleichzeitig mit dem Hauptprogramm oder mit anderen Threads laufen können.

«Schön und gut», werden Sie jetzt sagen, «aber bislang kam ich auch ganz gut ohne Threads aus. Warum soll ich nun plötzlich den ganzen Aufwand betreiben, Programme in gleichzeitig ablaufende Unterprogramme zu zerlegen?»

Einerseits, weil es in der Realität viele Probleme gibt, die gleichzeitig stattfinden, und die man entsprechend behandeln muss. Andererseits kann der Bedienungskomfort einer Anwendung wesentlich verbessert werden. Java-Programme steuern sehr häufig graphische Benutzerschnittstellen. Die Reaktionszeit der Schnittstellenelemente, wie z.B. Knöpfe und Menüselektionen kann durch Threads wesentlich verbessert werden. Der anschliessende Auftrag befasst sich genau mit dieser Problematik.

Ziel

  Wenn Sie den Posten bearbeitet haben sollten Sie:

Auftrag

In diesem Posten wollen wir nun das Hauptprogramm nach dem Prinzip «divide et impera» gestalten. Statt dass ein Programm das ganze Fraktal berechnet, teilen wir das Fraktal in mehrere Segmente und lassen diese durch mehrere Threads berechnen.

Ändern Sie Ihr Programm so, dass das Fraktal von mehreren unabhängigen Threads berechnet wird. Die Berechnung soll auch jederzeit abgebrochen werden können. Es steht wiederum ein Testprogramm zur Verfügung, das die ganze graphische Umgebung implementiert. Ihre neu geschriebenen Klassen Mandelbrot und Julia müssen mit dem Testprogramm kompatibel sein.

Wir erwarten von Ihnen, dass mindestens eine der beiden Fraktalklassen (Mandelbrot oder Julia) mit mehreren Threads berechnet werden kann. Das Ergebnis muss als Fraktal erkennbar sein, darf aber noch Bildartefakte aufweisen, diese werden im nächsten Posten behoben.

Material

Es stehen Ihnen folgende Materialien zur Verfügung:

Parallelität
Erklärt die verschiedenen Arten von Parallelität, die in der Informatik unterschieden werden.
Threads in Java
Zeigt, wie Threads in Java definiert sind und wie sie verwendet werden.
Tips und Hinweise
Lesen Sie diesen Text durch bevor Sie mit der Arbeit anfangen.
Lösungsmöglichkeit
Enthält einen Lösungsvorschlag für diesen Werkstattposten.

OOP - Werkzeuge - Referenzen - Fäden - Synchronisation - Applets - Dokumentation
Werkstatt - Bibliographie