Das Runnable-Interface enthält nur eine Methode: die run()
-Methode. Die Thread
-Klasse implementiert tatsächlich das Runnable
-Interface.
Daher implementiert Ihre Unterklasse auch das Runnable-Interface, wenn Sie von der Thread-Klasse erben.
Hier ist ein Beispiel, wie das alles passiert:
import java.applet.Applet;
public class OurApplet extends Applet {
public void init() {
Runnable ot = new OurClass();
Thread th = new Thread(ot);
th.start();
}
}
Die start()
-Methode des neuen Thread-Objekts wird aufgerufen, um die Ausführung des neuen Kontrollthreads zu starten.
Der Grund, warum wir dem Thread-Objekt den Runnable-Objekt übergeben müssen, besteht darin, dass der Thread auf irgendeine Weise zur run()
-Methode gelangen muss, die wir möchten, dass der Thread ausgeführt wird. Da wir die run()
-Methode der Thread-Klasse nicht mehr überschreiben, wird die Standard-run()
-Methode der Thread-Klasse ausgeführt. Diese Standard-run()
-Methode sieht so aus:
public void run() {
if (target != null) {
target.run();
}
}
Hier ist target
das Runnable-Objekt, das wir dem Konstruktor des Threads übergeben haben. Der Thread beginnt also mit der Ausführung der run()
-Methode der Thread-Klasse, die sofort die run()
-Methode unseres Runnable-Objekts aufruft.