Weitere aktuelle Java-Titel finden Sie bei dpunkt.
 Inhaltsverzeichnis   Auf Ebene Zurück   Seite Zurück   Seite Vor   Auf Ebene Vor   Eine Ebene höher   Index


11.1

Einleitung


Der Begriff Multithreading wird häufig in einen Topf mit Multitasking oder Multiprocessing geworfen. Die Bezeichnungen klingen ähnlich und sind auch in ihrer Bedeutung miteinander verwandt. Dennoch ist es wichtig, sie klar voneinander zu trennen.

Während die Begriffe Multitasking und Multiprocessing im Bereich der Hardware und Betriebssysteme angesiedelt sind und sich auf generelle Features des Rechnersystems beziehen, ist Multithreading viel näher an einzelnen Programmen. Auf einem klassischen Multitasking-System ist es möglich, mehrere Programme quasi-parallel ablaufen zu lassen. Dies ist vor allem dann eine wichtige Forderung, wenn mehrere Benutzer gleichzeitig auf einem System arbeiten sollen oder wenn Dienste über eine Netzwerkverbindung angeboten werden. In diesen Fällen müssen mehrere Anwendungen und Hintergrundprozesse parallel aktiv sein können.

In einem Multitasking-System ist es bei weitem nicht immer möglich, dass ein Programm selbst aus mehreren parallel ablaufenden Teilen besteht. Auf klassischen UNIX-Systemen, die sowohl Multiuser- als auch Multitasking-Systeme sind, werden derartige Probleme so gelöst, dass ein Programm mehrere Prozesse erzeugt, die dann in einer eigenen Umgebung, mit einem eigenen Speicherbereich etc. ablaufen und über die üblichen Interprozesskommunikationsprimitiven miteinander kommunizieren. Man spricht hier auch von Child-Prozessen und in Anlehnung an den UNIX-Systemaufruf zum Erzeugen eines solchen Prozesses von »Forken«. Die Erzeugung und Verwaltung eines solchen Child-Prozesses kostet Zeit und generell Systemressourcen.

Da die einzelnen Prozesse einer Applikation in der Regel inhaltlich eng aneinander gebunden sind und auch auf gemeinsame Variablen zugreifen sollten, ist es naheliegend, einfachere Prozesse zu fordern, die keinen eigenen Speicherbereich besitzen bzw. leichter zu verwalten sind. Dies führte zur Entwicklung von Threads.

Ein Multithreading-System oder eine Programmiersprache mit dieser Eigenschaft bietet also die Möglichkeit, auf einfache und ressourcenschonende Weise verschiedene Teile innerhalb eines einzigen Prozesses parallel ablaufen zu lassen.

Praktisch ist dies vor allem bei der Erstellung von Programmen, die einen hohen Kommunikationsanteil haben. Anstelle von ereignisorientierter Programmierung, bei der das Programm beim Eintreffen eines Ereignisses unterbrochen wird, um beispielsweise auf eine Anfrage aus dem Netz zu reagieren, kann man in einer Multithreading-Umgebung einen Thread zur Bearbeitung von solchen Anfragen programmieren und andere Aufgaben parallel ablaufen lassen. Auch Programme mit grafischen Oberflächen kann man hier einordnen, wobei die Interaktion der Oberfläche mit dem Benutzer auch als Kommunikationsverbindung betrachtet werden kann. Die Multithreading-Features von Java entlasten den Programmierer von der manuellen Verwaltung der verschiedenen Teilaufgaben.


 Inhaltsverzeichnis   Auf Ebene Zurück   Seite Zurück   Seite Vor   Auf Ebene Vor   Eine Ebene höher   Index

Copyright © 2002 dpunkt.Verlag, Heidelberg. Alle Rechte vorbehalten.