| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 23/02/2007 11:19:50
|
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 |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 23/02/2007 12:01:18
|
nbluis
GUJ Master
![[Avatar]](/images/avatar/f0682320ccbbb1f1fb1e795de5e5639a.jpg)
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. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 23/02/2007 12:30:30
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
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.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 23/02/2007 12:46:09
|
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/
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 23/02/2007 15:00:46
|
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 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 23/02/2007 15:05:31
|
nbluis
GUJ Master
![[Avatar]](/images/avatar/f0682320ccbbb1f1fb1e795de5e5639a.jpg)
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. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 23/02/2007 15:21:00
|
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 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/02/2007 09:34:23
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
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.
|
|
|
 |
|
|