if(x==0){
Thread t = new Thread("xxx");
t.start();
}else if(x==12){
Thread t = new Thread("yyy");
t.start();
} // aqui continua outros else if
Minha dúvida é, quando ela faz um start com t.start, após o término do método RUN da thread, ela num libera todos recursos e a thread morre? ou não, precisasia chamar o destroy()?
Tipo quantas vezes vc chama esse metodo ai?
Vc deve ta chamando milhoes de vezes num curto intervalo de tempo nem dando tempo pra Thread terminar o run dela.
Outra coisa, vc deu wait em algum lugar?
A única liberação de memória que acontece é pelo coletor de lixo. Se a Thread mantinha referência a objetos e, ao morrer, estes objetos se tornam inalcançáveis, o coletor de lixo vai pegá-los. Se estes ainda continuam alcançáveis, o coletor de lixo não vai pegá-los.
Não use o método Thread.destroy(). Ele é depreciado, nunca foi implementado e provavelmente nunca vai ser implementado (se você chamá-lo, ele lança um Error dizendo que não foi implementado).
Não querendo ser chato mas ficaria melhor se vc deixasse assim:
Thread t = null;
if(x==0){
t = new Thread("xxx");
}else if(x==12){
t = new Thread("yyy");
} // aqui continua outros else if
if (t != null) {
t.start();
}
[quote=Sagatiba]Tipo quantas vezes vc chama esse metodo ai?
Vc deve ta chamando milhoes de vezes num curto intervalo de tempo nem dando tempo pra Thread terminar o run dela.
Outra coisa, vc deu wait em algum lugar?
[/quote]
Se esse for realmente o caso, dá uma olhada no java.concurrent.ExecutorService