2012-06-17 17 views
7

Eventuali duplicati:
Java: “implements Runnable” vs. “extends Thread”Uso di creazione di un thread estendendo una classe Thread

Java fornisce due opzioni per creare un esempio classe Thread sia implementando Runnable o estendendo classe Thread .

So che ci possono essere molti motivi per implementare un Runnable ma non sono sicuro dove lo scenario sarebbe quello di estendere una classe Thread per creare la propria classe Thread?

La prego di fornirmi gli scenari in cui si estende discussione sembra essere un'opzione fattibile o meglio o vantaggiose ...

C'era un Question sui fili, ma che non c'è bisogno d rispondere alla mia domanda

risposta

2

Ci è quasi nessuna ragione per estendere Thread, in pratica l'unica ragione per cui vorresti estendere il thread è se hai intenzione di scavalcare cose diverse da run(), che in genere è una cattiva idea. La ragione per cui è meno comune estendere Thread è perché la classe non può estendere nient'altro, e se si esegue solo l'override del metodo run(), sarebbe piuttosto inutile estendere Thread e non implementare Runnable.

0

Runnable è un'interfaccia con un solo metodo run() che deve essere implementato dalla classe che implementa l'interfaccia.

ad es.

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

MyRunnable non è un Thread né è possibile creare un nuovo thread semplicemente utilizzando quella classe. Quindi, non del tutto senso dire -

Java fornisce due opzioni per creare una classe Thread cioè sia implementando Runnable ...

è possibile estendere la classe Thread ma proprio come @ John ha detto che non ha senso farlo.

Ma se si desidera eseguire del codice in un nuovo thread allora quanto segue è il modo migliore -

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

t.start() metodo avvia un nuovo thread e invoca run() metodo su r (che è un esempio di MyRunnable

+0

In realtà conosco questo concetto di come creare un Thread, ma volevo sapere dove effettivamente creo un Thread estendendo una classe piuttosto che implementando un'interfaccia;) – Satya

Problemi correlati