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.3.2

Anhalten von Threads


Zum Anhalten von Threads konnte man bis zur Version 1.1 einfach die Methode Thread.stop() aufrufen. Da sich aber herausgestellt hat, dass das Beenden von Threads mitten im Ablauf in einigen Situationen problematisch ist, beispielsweise während ein Thread einen Monitor besitzt, wurde Thread.stop() seit Version 1.2 verworfen.

Falls es in einer Anwendung erforderlich ist, einen Thread anzuhalten, dessen Rumpf aus einer Schleife besteht, soll stattdessen folgendes Muster angewendet werden: Der folgende Auszug stammt aus dem Laufschrift-Applet aus dem Grafikkapitel und zeigt, wie dieses Muster implementiert wird.
  public class ScrollTextDemo1
                      extends Applet implements Runnable {
                      ...
    public void start() {
     if (t == null) {        // Wenn kein Thread angelegt ist
       t = new Thread(this); // Anlegen und Starten des Threads
       t.start();
     }
    }
  
    public void stop() {
      t = null;             // dereferenzieren
    }
  
    public void run() {
      Thread me = Thread.currentThread();
      while(me == t) {
        if (x < -textwidth) // Text am Ende des Applets?
          x = getSize().width;   // wieder zum Anfang
        else                // sonst
          x = x - STEP;       // um 'STEP' versetzen
        repaint();          // Text neu zeichnen
        try {
          t.sleep(DELAY);   // Verzögerung
        }
        catch  (InterruptedException e) {
          e.printStackTrace();
        }
      }
    }
  }


 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.