next up previous contents
Next: Aufgabe Up: Threads Previous: Userlevel und Kernel-Threads   Contents


Java-Threads

In der JVM laufen alle Java-Programme als Threads. Die Java-Programme haben mindestens einen Thread, der das Programm kontrolliert.

Mit Hilfe der Klasse Thread der Java-API lassen sich auf zwei unterschiedliche Weisen weitere Threads kreieren:

  1. Man erweitert die Klasse Thread, wobei man die Methode public void void run() overriden muss. Der Rumpf der Methode run legt fest, was der Thread nach seinem Start ausführt. Die Klasse Thread besitzt eine Methode start(), welche für jede Instanz der Subklasse von Thread die Methode run als eigenen neuen Thread startet. Betrachten wir das Beispiel in Abbildung [*]

    Figure: Ein neuer Java-Thread
    \begin{figure}\begin{center}
\begin{verbatim}class RunnableNewThread implemen...
...intln(''Ich bin der Hauptthread'');
}
}\end{verbatim} \end{center}\end{figure}

    Die Klasse NewThread ist eine Subklasse von Thread. Hierin wird die Methode run overriden. In der Klasse MainThread wird eine Instanz der Klasse NewThread gebildet und die von der Klasse Thread geerbte Methode start aufgerufen.
  2. Eine zweite Möglichkeit ist den Konstruktor der Klasse Thread mit einem Objekt einer Klasse, die das Interface Runnable (Abbildung [*]) implementiert, als Argument aufzurufen.

    Figure: Das Interface Runnable
    \begin{figure}\begin{center}
\begin{verbatim}public interface Runnable {
public abstract void run();
}\end{verbatim} \end{center} \end{figure}

    In diesem Fall muss man nun ein Objekt der Klasse Thread bilden und wiederum die Methode start aufrufen. Abbildung [*] zeigt ein Beispiel dafür.

    Figure: Ein neuer Java-Thread mit Hilfe des Interfaces Runnable
    \begin{figure}\begin{center}
\begin{verbatim}class Thread1 extends Thread {
...
...println(getName()+'': ''+i);
}
}
}
}\end{verbatim} \end{center}\end{figure}

    Die Klasse RunnableNewThread implementiert das Interface Runnable. In der Klasse MainRunnableThread wird nun eine Instanz der Klasse Thread gebildet mit einem Konstruktor der als Argument eine Instanz der Klasse RunnableNewThread hat. Nun wird mit der Methode start der Instanz der Klasse Thread der neue Thread aktiviert.

Die Klasse Thread stellt noch eine ganze Reihe von Methoden zur Kontrolle von Threads in Java zur Verfügung. Hierzu sei auf die Java-Dokumentation der Klasse java.lang.Thread verwiesen.



Subsections
next up previous contents
Next: Aufgabe Up: Threads Previous: Userlevel und Kernel-Threads   Contents
Prof. Dr. Pluemicke 2003-05-10