29 Nebenläufige Prozesse
29.1 Was ist ein Thread?
 
Threads - Prozess Programme, die wir bisher geschrieben haben wurden sequenziell abgearbeitet, d.h. Programmschritt für Programmschritt wurde abgearbeitet. Man kann sie sich linear angeordnet vorstellen, so dass man alle Programmschritte durchzählen kann. Will man , dass zwei oder mehr Aufgaben gleichzeitig, oder wie wir auch gerne sagen, nebenläufig abgearbeitet werden, benutzt man Prozesse oder Threads. Während zwei Prozesse vollkommen getrennt voneinander in verschieden Speicherbereichen (Adressbaum) gearbeitet werden, wie etwa das Drucken aus einer Textverarbeitung heraus und das Surfen im Internet mittels eines Browsers, laufen Threads im gleichen Adressbaum, benutzen aber verschiedene Stapel (Stacks) um ihre Aufgaben zu erledigen. So können Threads ihre eigene Methodenaufrufe und ihre eigenen Variablen verwalten.

Ohne dass wir es explizit Programmieren müssen, besitzt jede Java-Anwendung mindestens einen Thread, der im Falle einer Anwendung die main-Methode und im Falle eines Applets die Methoden init()1), start()0, stop1), und destroy()1) ausführt. Die Threads laufen dabei in der auf dem Rechner installierten VM bzw. der VM, die im Browser integriert ist. Wir dürfen uns von einem Thread ein anschauliches Bild machen. Die deutsche Übersetzung für das engl. Wort Thread heißt Faden. Der Thread, der die main-Methode kontrolliert ist also wie ein Faden, die Perlen, die auf diesem Faden aufgefädelt sind repräsentieren die einzelnen Prozesse, die in der Main-Methode sequenziell abgearbeitet werden.

Einen Thread kann man mit der Thread-Klassenmethode currentThread() abfragen. Genauer, currentThread liefert einen Verweise auf dasjenige Thread-Objekt, das die Methode ausführt, aus der heraus die Methode currentThread() aufgerufen wurde. Wir wollen dies an einem einfachen Programm testen.

Download:
MainThread. java
public class MainThread{

  public static void main(String[] args){

    Thread laufenderThread = Thread.currentThread();

    System.out.println("Name des Threads: " +

                        laufenderThread.getName());

 }

}

Mit der Methode getName() lässt sich der Name des Thread-Objekts ermitteln. Wir erkennen, dass das Thread-Objekt, das die main(...) ausführt, auch main heißt.
 

 

Über diesen Thread main kontrolliert die VM die main-Methode. Es gibt noch viele Standard-Threads, die nicht implementiert werden müssen, also jeweils implizit vorgegeben sind.

 

Nicht nur Java, auch andere Programme benutzen Threads. Z.B. mit dem Windows-Taskmanager kann man die momentan laufende Prozesse und ihre benutzten Threads beobachten.

 
Fußnoten  

1)

Wir lernen diese Methoden und ihre Funktionalitäten genauer kennen, wenn wir uns mit Appletsprogrammierung beschäftigen
   
zu 29.2 Eine eigene Thread-Klasse
zur Startseite www.pohlig.de  (C) MPohlig 2006