Kleine Frage zu Threads

SevenOfNine

Mitglied
Hallo Liebe Forum-Mitglieder, ich bin neu hier und habe eine kleine Frage zu Threads, die ich mir nicht beantworten kann. Ich weiß, dass es für die Praxis völlig irrelevant ist, aber ich würde es trotzdem gerne genau verstehen. Schaut euch doch bitte mal folgenden Code an:

Java:
class MyRunnable implements Runnable
{
  public void run()
  {
    System.out.println("Inside MyRunnable");
  }
}

class MyThread extends Thread
{
  public MyThread(Runnable obj)
  {
    super(obj);
  }

  public void run()
  {
    System.out.println("Inside MyThread");
  }
}

public class ThreadTest
{
  public static void main(String[] args)
  {
    MyRunnable r = new MyRunnable();
    Thread t = new MyThread(r); //richtig: Thread t = new Thread(r);
    t.start();
  }
}

Die Ausgabe lautet:
Inside MyThread

Warum wird nun nicht die run Methode von MyRunnable sondern von MyThread gestartet? Kann mir das jemand erklären? Ich danke euch allen im Voraus.

LG, SevenOfNine
 
Zuletzt bearbeitet von einem Moderator:
HIER siehst du denn Quellcode für die Standardimplementierung der Methode run(). Du überschreibst das Verhalten und somit wird Runnable nicht ausgeführt.
 
Hey Flown, vielen dank für die schnelle Antwort! Das habe ich mir schon gedacht, da t den dynamischen Typ MyThread hat. Man sollte sich neben der API wohl öfters auch den Quellcode anschauen, um genau zu wissen, was passiert. Jetzt ist mir alles klar, nochmals Danke! 🙂
 
Hallo SevenOfLine,

du musst dir nicht wirklich den Quellcode der Oberklasse ansehen.
Es reicht, wenn du verstanden hast, dass dieser Quellcode nicht mehr ausgeführt wird, wenn du die Methode überschreibst.

Gruß
Fritz
 

Zurück
Oben