27.7.2 Implementierung von Ballon
 
Runnable Das Wachsen des Ballons ist ein nebenläufiger Prozess, muss also von einem eigenen Thread kontrolliert werden. Da aber die Klasse Ballon bereits von Kreis erbt, aggregieren  wir ein Thread-Objekt dieserThread. Erzeugt wird dieses Objekt in der start() Methode unsrer Klasse Ballon, wobei dem Konstruktor ein Runnable-Objekt nämlich wachseRadiusRun, das wir im Konstruktor von Ballon 'instanziiert' haben. Wie wir schon gelernt haben, müssen wir dabei die run()-Methode implementieren. Die run()-Methode ruft lediglich die Methode wachseRadius() auf, die als private Methode in der Klasse Ballon implementiert ist.
Download:
Ballon.java
package tauglichkeitstester.figur;
import java.awt.*;

public class Ballon extends Kreis {
                    
  private Runnable wachseRadiusRun;
  private Thread dieserThread;

  public Ballon(int xMitte, int yMitte, Color farbe) {
    super(xMitte, yMitte, 0, farbe);
    wachseRadiusRun = new Runnable() {
      public void run() {
        wachseRadius();
      }
    };
  }
  
  //Nicht zu verwechslen mit der start()-Methode 
  //eines Thread-Objekts
  public void start() {
    dieserThread = new Thread(wachseRadiusRun);
    dieserThread.setPriority(Thread.MAX_PRIORITY);
    dieserThread.start();
  }


  // Vergrößert den Radius des Ballons alle 25 
  //Millisekunden um ein Pixel.
  private void wachseRadius() {
    Thread thread = Thread.currentThread();
    while (thread == dieserThread) {
      try {
        Thread.sleep(25);
      }
      catch(InterruptedException e) {
        return;
      }
      // Wir wohl nie erreicht werden, aber zur Sicherheit!
      if (radius < Integer.MAX_VALUE)
        radius++;
    }
  }

  public void stop() {
    if (dieserThread != null) {
      dieserThread.interrupt();
      dieserThread = null;
    }
  }
}
  Der restliche Quelltext ist selbsterklärend. Unter Umständen empfiehlt es sich, noch einmal das Kapitel über Threads nachzulesen
-> 24 Threads - nebenläufige Prozesse)

Wie schon KQuadrat gehört auch Ballon in das Paket tauglichkeitstester.figur und muss deshalb im Projektordner ..\tauglichkeitstester\figur abgespeichert und kompiliert werden.
 

zu 27.8 Die Klasse Ampel
zur Startseite www.pohlig.de  (C) MPohlig 2004