4 Stimmen

Java : Thread ruft Runnable auf

Ich bin neu in Java. Ein Zweifel.

Ich habe gelesen, dass intern die Methode run() der Thread-Klasse die Methode run() des Runnable-Interfaces aufruft.

Meine Frage ist,

Wie ruft die Methode run() der Thread-Klasse die Methode run() des Runnable-Interfaces auf?

Vielen Dank im Voraus.

5voto

Saurabh Gokhale Punkte 51834

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.

0voto

Suroot Punkte 4231

Im Wesentlichen implementiert Thread Runnable. Die run-Funktion von Thread ruft die "Ziel"- (wobei das Ziel Runnable implementiert) run-Methode auf (falls vorhanden). Wie der folgende Code zeigt, legen Sie normalerweise das Ziel-Runnable fest, wenn Sie das Thread-Objekt erstellen.

HINWEIS: Runnable ist eine anonyme Klasse, man muss nicht zu weit gehen, um daran zu denken, dass es eine Unterklasse von Runnable ist.

Runnable run = new Runnable() { public void run() { /* code */ } }; // Runnable erstellen
new Thread(run).start(); // Thread erstellen und den Thread starten.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X