kramann.info
© Guido Kramann

Login: Passwort:










7.3 Implementierung nebenläufiger Prozesse - so genannte Threads - in Java

  • Java bietet bereits fertig implementierte Mechanismen zur Erzeugung und Synchronisation parallel ablaufender Prozesse, so genannter Threads.
  • Grundsätzlich existieren zwei Möglichkeiten Threads zu erzeugen...
  1. ...durch Erben von der Klasse Thread und
  2. ...durch Implementierung der Schnittstelle Runnable
  • Die erste Methode bringt mehr Methoden zur Thread-Steuerung mit.
  • Da aber Mehrfachvererbung in Java nicht erlaubt ist, läßt sie sich nur auf Klassen anwenden, die nicht schon von einer anderen Klasse Eigenschaften erben.
  • Eben diesen Fall hat man vor sich bei Klassen, die von Applet erben.
  • Will man ein Applet einsetzen, um damit beispielsweise Simulationsergebnisse grafisch zu animieren, so kann dies in direkter Weise folglich nur über die Implementierung von Runnable erfolgen.

Implementierung nebenläufiger Prozesse durch Erben von der Klasse Thread

  • Die folgenden Methoden sind in der Klasse Thread u.a. verfügbar und werden anhand kleiner Beispiele vorgeführt:
Methodenname Beschreibung Beispiel
run() Methode, in der der Prozeß steht,
der parallelisiert werden soll. Oft steht hier eine Endlosschleife.

public void run()
{
while(true){System.out.println("Prozess Nr. 1");}
}

start() Nach Erzeugen eines Thread-Objekts
wird die Methode run() erst nach Aufruf von start() gestartet.

MeinThread mT = new MeinThread();
mT.start();
sleep(long millisekunden) Statische Methode, die den Prozess für die
angegebene Anzahl an Millisekunden pausiert,
in dem sie steht. Es kann sich dabei sowohl um ein Thread,
als auch um den Hauptprozeß handeln.

try(){Thread.sleep(1000);}
catch(Exception e){}
boolean isAlive() Prüft, ob Thread gestartet wurde und die Methode
run() nicht abgeschlossen ist oder gestoppt wurde.

if(mT1.isAlive()){...}
stop() Hält das Thread endgültig an.
Systemressourcen wieder frei.

mT1.destroy();
suspend() Thread auf unbestimmte
Zeit in seiner Ausführung unterbrechen.

mT1.suspend();
resume() Thread, das mit suspend() unterbrochen
wurde wieder weiter arbeiten lassen.

mT1.resume();
setName(String name) Thread mit Namen versehen

mT1.setName("T1");
String getName() Threadnamen auslesen

String n = mT1.getName();
Thread currentThread() Statische Methode, die eine Referenz
auf das derzeit aktive Thread zurückgibt.

Thread aktiv = Thread.currentThread();
synchronized() Methode, die immer nur von einem Thread benutzt werden darf.
D.h. bevor Thread B sie benutzen darf, muß sie für Thread A ganz durchgelaufen sein.

public static synchronized void meineMethode(){...}

Tabelle 7.3-1: Beschreibung wichtiger in der Klasse Thread verfügbarer Methoden

Beispiele für die Verwendung der Klasse Thread in Java.