Ezxecutar uma thread sem implementar runnable [Resolvido]  XML
Índice dos Fóruns » Certificação Java
Autor Mensagem
diegohsi
JavaTeenager
[Avatar]

Membro desde: 30/05/2010 21:52:01
Mensagens: 180
Offline

Galera,
eu posso executar uma thread sem criar um objeto runnable nesse caso? Pois estou executando o código, porém não imprime nada na tela.

This message was edited 1 time. Last update was at 18/01/2011 14:26:48

felipe.sales
Thread.start()

Membro desde: 20/07/2009 17:17:44
Mensagens: 41
Offline

eh pq o seu metodo esta escrito errado, eh "run" que deve se chamar e não "rum"

SCJP 6. São Miguel, guardai-me e defendei-me no combate.
esmiralha
JavaEvangelist

Membro desde: 19/07/2006 09:04:42
Mensagens: 402
Offline

Esse já estava pensando na sexta-feira!

This message was edited 1 time. Last update was at 14/01/2011 17:51:10

erictorti
Thread.start()

Membro desde: 02/04/2010 23:11:58
Mensagens: 25
Offline

esmiralha wrote:Esse já estava pensando na sexta-feira!


ViniGodoy
Moderador
[Avatar]

Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline

Como Thread implementa Runnable, você continua implementando um Runnable.
Entretanto, sobrescrever Thread não é considerada uma boa prática. O ideal é implementar a interface Runnable diretamente.

Dica. Sempre que sobrescrever um método, de qualquer classe, coloque a anotação @Override em cima desse método. Assim, se vc cometer um erro de grafia (como ocorreu nesse seu código), o compilador vai saber que sua intenção era sobrescrever alguma coisa, e vai te avisar que o método em questão não sobrescreve nada.



Isso é ainda mais útil quando você estiver sobrescrevendo suas próprias interfaces e classes. Assim, se você alterar o nome de um método na classe pai, o compilador automaticamente dará erro em todas as classes filhas onde você esquecer de alterar o nome do método também.

@ViniGodoy - Lattes

Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!

Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).

Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
[WWW]
erictorti
Thread.start()

Membro desde: 02/04/2010 23:11:58
Mensagens: 25
Offline

ViniGodoy wrote:Sempre que sobrescrever um método, de qualquer classe, coloque a anotação @Override em cima desse método.


Legal, Vini, muito oportuna essa observação.

Às vezes, parece desnecessária a anotação, mas, nesse caso, ela teria se provado bem valiosa

Valeu.
diegohsi
JavaTeenager
[Avatar]

Membro desde: 30/05/2010 21:52:01
Mensagens: 180
Offline

ViniGodoy wrote:Como Thread implementa Runnable, você continua implementando um Runnable.
Entretanto, sobrescrever Thread não é considerada uma boa prática. O ideal é implementar a interface Runnable diretamente.

Dica. Sempre que sobrescrever um método, de qualquer classe, coloque a anotação @Override em cima desse método. Assim, se vc cometer um erro de grafia (como ocorreu nesse seu código), o compilador vai saber que sua intenção era sobrescrever alguma coisa, e vai te avisar que o método em questão não sobrescreve nada.



Isso é ainda mais útil quando você estiver sobrescrevendo suas próprias interfaces e classes. Assim, se você alterar o nome de um método na classe pai, o compilador automaticamente dará erro em todas as classes filhas onde você esquecer de alterar o nome do método também.

Valeu vini, eu ja tinha visto esse @override mas não sabia pra que servia.
Agora eu estava vendo no livro da katy realmente é melhor implementar runable.

This message was edited 1 time. Last update was at 14/01/2011 20:17:00

diegohsi
JavaTeenager
[Avatar]

Membro desde: 30/05/2010 21:52:01
Mensagens: 180
Offline

Mesmo eu corrigindo o metodo run(), ainda ocorre o erro de que eu não implementei runnable. Segue a minha pergunta novamente, "eu posso executar uma thread sem criar um objeto runnable nesse caso, ou sem implementar Runnable, extendendo apenas Thread??
brrodo
JavaTeenager

Membro desde: 07/02/2009 23:31:16
Mensagens: 173
Offline

diegohsi wrote:Mesmo eu corrigindo o metodo run(), ainda ocorre o erro de que eu não implementei runnable. Segue a minha pergunta novamente, "eu posso executar uma thread sem criar um objeto runnable nesse caso, ou sem implementar Runnable, extendendo apenas Thread??


A classe Thread implementa Runnable. Isso responde sua pergunta?
diegohsi
JavaTeenager
[Avatar]

Membro desde: 30/05/2010 21:52:01
Mensagens: 180
Offline

brrodo wrote:
diegohsi wrote:Mesmo eu corrigindo o metodo run(), ainda ocorre o erro de que eu não implementei runnable. Segue a minha pergunta novamente, "eu posso executar uma thread sem criar um objeto runnable nesse caso, ou sem implementar Runnable, extendendo apenas Thread??


A classe Thread implementa Runnable. Isso responde sua pergunta?


Veja bem Brrodo, li no livro da katy e o que entendi: Para executar, startar, enfim, uma Thread, temos que ter um objeto Runnable(trabalho) e um objeto Thread (trabalhador). Uma Thread necessita de ambos para existir uma nova pilha de métodos. Para criar um OBJETO Thread podemos exetender Thread (não aconselhavel) ou implementar Runnable. Agora a respota para a minha pergunta: 'Para executar uma Thread ou, criar uma nova pilha de métodos, é necessário de pelomenos um objeto THread e um Objeto Runnable."
OBS: Como Runnable é uma interface com o método run();, precisamos sobrescreve-lo, lembre-se: Sobrescrever o método run() de Runnable, pois se extendermos a classe Thread que possui um método run() ja sobrescrito da interface Runnable, ele será executado na pilha normalmente e não será criada uma nova pilha.

Pessoal, se eu escrevi alguma besteira me corrijam por favor, pois foi isso que entendi até o momento, as vezes eu não soube compriender na respostas anteriores dos nossos amigos.

This message was edited 1 time. Last update was at 17/01/2011 16:54:49

diegohsi
JavaTeenager
[Avatar]

Membro desde: 30/05/2010 21:52:01
Mensagens: 180
Offline

Lembrando que ainda não concluí o capítulo de Thread.
programadora
JavaChild
[Avatar]

Membro desde: 17/03/2008 16:40:13
Mensagens: 112
Offline

O erro que ocorre, provavelmente decorre do fato de vc não implementar o método run() corretamente. O correto é:



você esqueceu do "public".

vlw

Faço programas... E daí??
brrodo
JavaTeenager

Membro desde: 07/02/2009 23:31:16
Mensagens: 173
Offline

programadora wrote:O erro que ocorre, provavelmente decorre do fato de vc não implementar o método run() corretamente. O correto é:



você esqueceu do "public".

vlw


É, mais aí teríamos erro de compilação.
programadora
JavaChild
[Avatar]

Membro desde: 17/03/2008 16:40:13
Mensagens: 112
Offline

Erro de compilação porque? O código do diegohsi funciona perfeitamente após a mudança que sugeri.

Faço programas... E daí??
brrodo
JavaTeenager

Membro desde: 07/02/2009 23:31:16
Mensagens: 173
Offline

programadora wrote:Erro de compilação porque? O código do diegohsi funciona perfeitamente após a mudança que sugeri.


Teríamos erro de compilação caso o problema fosse o modificador de acesso do método "run()" estar em "default" e não "public" e não o erro de que eu "não foi implementado runnable".
 
Índice dos Fóruns » Certificação Java
Ir para:   
Powered by JForum 2.1.8 © JForum Team