duvida em Thread  XML
Índice dos Fóruns » Java Básico
Autor Mensagem
davidhc
JavaEvangelist

Membro desde: 26/07/2006 09:11:47
Mensagens: 359
Offline



Opa

Alguém pode me dizer se esse código acima está correto? Pq parece que ele não entra nunca no if

talvez esteja tão vazio =o
[Email]
nbluis
GUJ Master
[Avatar]

Membro desde: 27/05/2006 01:31:51
Mensagens: 1531
Localização: Porto Alegre - RS
Offline

David, olha o que diz a API java quanto a isso.


isAlive
public final boolean isAlive()
Tests if this thread is alive. A thread is alive if it has been started and has not yet died.
Returns:
true if this thread is alive; false otherwise.


http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Thread.html

Até....

Luis Eduardo Bohrer

Any fool can write code that a computer can understand. Good programmers write code that humans can understand.
[WWW]
ViniGodoy
Moderador
[Avatar]

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

Há uma série de problemas nesse código.

1. Você não deu start(). Como sua thread não está rodando, isAlive() vai retornar false.

2. O método destroy() é deprecated e não deveria ser usado. Seu código fica sujeito a deadlocks, objetos podem ser deixados em estados inválidos, etc.

3. Uma vez parada, a thread não pode ser reiniciada.
[WWW]
LPJava
GUJ Hacker

Membro desde: 18/04/2006 12:50:23
Mensagens: 5524
Localização: Bahia/Porto Alegre
Offline

primeiro pq vc nao colocou sua thread no modo executavel dando um start() e entao isAlive() retorna false ja que nao existe nenhuma thread em execucao, veja que antes do metodo isAlive() vc definiu a instancia.. entao nada roda ai alem do main...

Sun Certified Java Programmer 5.0
Blog:http://www.camilolopes.com
Twitter:www.twitter.com/camilolope
Linkedin: http://br.linkedin.com/in/camilolopes
Curso online OCPJP: http://pro.imasters.com.br/online/cursos/preparatorio-para-certificacao-java-ocjp
Autor livro Guia SCJP & JEE c/ Frameworks: http://blog.camilolopes.com.br/livrosrevistaspalestras/
[WWW]
davidhc
JavaEvangelist

Membro desde: 26/07/2006 09:11:47
Mensagens: 359
Offline

mas a intenção dessa thread era verificar se ela existe, caso ela exista, eu mato ela e dou um start() de novo....não está certo o q estou fazendo?

pq essa thread está em um método que vai ocorrer várias vezes na execução e as vezes ele pode não terminar até ser chamada outra thread, então eu mataria a thread e começaria ela de novo...

talvez esteja tão vazio =o
[Email]
nbluis
GUJ Master
[Avatar]

Membro desde: 27/05/2006 01:31:51
Mensagens: 1531
Localização: Porto Alegre - RS
Offline

Sim, mas uma thread que ainda não foi iniciada não existe, pelo menos para o isAlive.....

Luis Eduardo Bohrer

Any fool can write code that a computer can understand. Good programmers write code that humans can understand.
[WWW]
davidhc
JavaEvangelist

Membro desde: 26/07/2006 09:11:47
Mensagens: 359
Offline

mas desse jeito ele funciona né? só a primeira vez que vai entrar como false..ou toda vez que faço o:



vou estar criando uma instância nova e apagar a antiga que existe??

talvez esteja tão vazio =o
[Email]
ViniGodoy
Moderador
[Avatar]

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

Dá uma olhada nesses tópicos. Eles mostram como fazer para evitar o método destroy.

http://www.guj.com.br/posts/list/52481.java#276164
http://www.guj.com.br/posts/list/43061.java#228024

Para criar uma nova thread você faz:
Thread t = new Thread(msg);
t.start();

É o start que dispara a thread. Depois disso, usa as técnicas descritas no link para para-la, mas nunca, em hipótese alguma, o método destroy().

Uma vez parada, uma thread não pode ser reiniciada, você terá que iniciar uma thread nova, dando um new e um start novamente.
[WWW]
 
Índice dos Fóruns » Java Básico
Ir para:   
Powered by JForum 2.1.8 © JForum Team