2012-06-17 4 views
7

Mögliche Duplizieren Verlängerung:
Java: “implements Runnable” vs. “extends Thread”Verwendung von Erstellen eines Threads durch eine Thread-Klasse

Java bietet zwei Optionen, um eine Thread-Klasse, dh erstellen entweder durch Runnable implementieren oder durch die Erweiterung Thread-Klasse .

Ich weiß, es kann viele Gründe geben, ein Runnable zu implementieren, aber nicht sicher, wo das Szenario eine Thread-Klasse erweitern würde, um eigene Thread-Klasse zu erstellen?

Könnten Sie mir bitte Szenarien bieten, wo Themen erstrecken scheint machbar oder bessere Option oder vorteilhaft zu sein ...

Es gab eine Question an den Fäden aber, dass did'nt meine Frage

Antwort

2

Es beantworten ist fast kein Grund, Thread zu erweitern, im Grunde ist der einzige Grund, warum Sie Thread erweitern möchten, wenn Sie andere Dinge außer run() überschreiben würden, was im Allgemeinen eine schlechte Idee ist. Der Grund, warum Thread weniger verbreitet ist, liegt darin, dass die Klasse dann nichts weiter erweitern kann. Wenn Sie nur die run() -Methode überschreiben, wäre es sinnlos, Thread zu erweitern und Runnable nicht zu implementieren.

0

Runnable ist eine Schnittstelle mit nur einer Methode run(), die von der Klasse implementiert werden muss, die die Schnittstelle implementiert.

z.B.

public class MyRunnable implements Runnable { 
    @Override 
    public void run() { 
     //... 
    } 
} 

MyRunnable ist kein Thread noch können Sie einen neuen Thread erstellen Sie einfach durch diese Klasse. So ist es nicht ganz Sinn zu sagen -

Java zwei Optionen bietet eine Thread-Klasse, dh zu schaffen entweder durch die Umsetzung Runnable ...

Sie die Thread Klasse erweitern können, aber wie @ John sagte, dass es keinen Sinn macht.

Aber wenn Sie einen Code in einem neuen Thread ausgeführt werden soll dann die folgende ist der beste Weg -

MyRunnable r = new MyRunnable(); 
Thread t = new Thread(r); 
t.start(); 

t.start() Verfahren startet einen neuen Thread und ruft run() Methode auf r (die eine Instanz von MyRunnable ist

+0

Ich kenne tatsächlich dieses Konzept, wie man einen Thread erstellt, aber wollte wissen, wo ich tatsächlich einen Thread erstelle, indem ich eine Klasse erweitere anstatt eine Schnittstelle zu implementieren;) – Satya

Verwandte Themen