Dúvida em Threads

Qual é a diferença entre:

class Teste implements Runnable

e

class Teste extends Threads

Li este artigo:

http://www.portaljava.com/home/modules.php?name=Content&pa=showpage&pid=9&page=3

No qual, são usadas as duas maneiras.

Qual a diferença entre elas?

Grato

Julio Romano

[code]java.lang
Class Thread

java.lang.Object
extended by java.lang.Thread

All Implemented Interfaces:
Runnable
[/code]

logo, não que exista diferença, é apenas um passo a frente.

[]'s

Quando sua classe implementa Runnable, vc deve implementar o método run e passar um objeto da sua classe para o construtor de uma Thread qualquer antes de iniciar essa thread com start. Se sua classe estende Thread, ela mesma sobrescreve o método run antes de ser inicializada.

[quote=“rodrigomaia”][code]java.lang
Class Thread

java.lang.Object
extended by java.lang.Thread

All Implemented Interfaces:
Runnable
[/code]

logo, não que exista diferença, é apenas um passo a frente.

[]'s[/quote]

Digamos que não é bem assim…

quando vc extende a classe Thread na hora de criar a sua thread vc simplismente faz…
SuaClasseQueExtendThread t = new SuaClasseQueExtendThread();
t.start();

mas quando vc implementa a interface Runnable, vc tem q criar um objeto Thread e passar para o seu construtor a classe que implementa a interface, e chamar o metodo start do seu objeto thread, ou seja…

Thread t = new Thread( new SuaClasseQueImplementaRunnable() ); t.start();

outra diferença é que se vc criar uma classe que extend thread vc não é obrigado a reescrever o método run, mas se implementar a interface Runnable, vc é obrigado a a implementar esse método.

Também agora na visão da arquitetura do sistema, eu ficaria sempre usando uma classe que implemente Runnable, pois lembrando que em java uma classe pode extender somente UMA classe, e se você usar a sua classe pra extender Thread, você fica sem a opção de herança na sua classe. OK :?:

Aí era só o cara trocar depois! :grin:

Aí era só o cara trocar depois! :grin:[/quote]
:?: :?:

Geralmente a herança é usada para criar uma classe mais específica que a superclasse. Provavelmente não é isso que você quer.