2012-06-17 1 views
7

Можно создать дубликат:
Java: “implements Runnable” vs. “extends Thread”Использования создания темы, расширяя класс Резьбы

Java предоставляет два варианта для создания класса Thread т.е. либо путем реализации Runnable или простирающегося класс Thread ,

Я знаю, что может быть много причин для внедрения Runnable, но не знаете, где сценарий должен был бы расширить класс Thread для создания собственного класса Thread?

могли бы вы предоставить мне сценарии, простирающийся тему кажется осуществимым или лучший вариант или выгодно ...

Был Question на резьбе но did'nt ответить на мой вопрос

ответ

2

Там почти не является причиной для продления Thread, в основном единственная причина, по которой вы хотите расширить поток, - это если вы собираетесь переопределить другие вещи, кроме run(), что, как правило, плохое. Причина, по которой менее распространена тема Thread, заключается в том, что тогда класс не может распространять что-либо еще, и если вы только переопределяете метод run(), то было бы бессмысленно расширять Thread и не реализовывать Runnable.

0

Runnable - это интерфейс только с одним методом run(), который должен быть реализован классом, реализующим интерфейс.

например.

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

MyRunnable не Thread и не можете создать новую тему, просто используя этот класс. Таким образом, это не совсем имеет смысла говорить -

Java предоставляет два варианта для создания класса Thread т.е. либо путем реализации Runnable ...

Вы можете расширить Thread класс, но так же, как @ Джон сказал, что нет никакого смысла в этом.

Но если вы хотите, чтобы выполнить некоторый код в новом потоке, то следующий лучший способ -

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

t.start() метод запускается новый поток и вызывает run() метод на r (который является экземпляром MyRunnable

+0

Я действительно знаю эту концепцию создания Thread, но хотел знать, где я фактически создаю Thread, расширяя класс, а не реализуя интерфейс;) – Satya