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.
Você não deu start(). Como sua thread não está rodando, isAlive() vai retornar false.
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.
Uma vez parada, a thread não pode ser reiniciada.
LPJava
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…
D
davidhc
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…
nbluis
Sim, mas uma thread que ainda não foi iniciada não existe, pelo menos para o isAlive…
D
davidhc
mas desse jeito ele funciona né? só a primeira vez que vai entrar como false…ou toda vez que faço o:
Threadthread=newThread(msg);
vou estar criando uma instância nova e apagar a antiga que existe??
ViniGodoy
Dá uma olhada nesses tópicos. Eles mostram como fazer para evitar o método destroy.