E ai galera, espero que possam me ajudar, estou com um problema, não sei como eu poderia usar um destroy ou algum outro método da classe Thread em uma thread específica. E isso chamando de uma outra thread.
Por exemplo, crio 10 threads, com nomes padrão de Thread-1, Thread-2, etc.
E aí crio mais uma thread e com essa thread dar um destroy na thread 5. Como faço isso? Tentei algumas coisas mas não funcionou… Tentei armazenar uma referência de todas as threads, armazenar o nome…etc Quem era destruído era a última thread, ou seja, a thread que deveria dar o comando para destruir a thread 5 do meu exemplo.
Qualquer ajuda eu agradeço.
HUmmm… grande problema… tambem preicos fazer um trabalho de facul com threads… se conseguir algom posto aki!!
Abracos!
Fala kra,
Bom… pelo que o próprio JAVA tutorial aconselha a fazer é setar o ponteiro da Thread como nulo, e dentro dela (no metodo run) vc verificar a validade deste ponteiro (num while, por exemplo)… e só executar alguma tarefa se o tal ponteiro for diferente de nulo…
Uma vez q ela nao rode, o proprio garbage collector ira remove-la da memoria, depois de algum tempo…
Não sei se entendeu o q quiz dizer, mas dá uma olhada em:
http://java.sun.com/docs/books/tutorial/essential/threads/lifecycle.html
No tópico: “Stopping a Thread”
[]'s
pesquisem pelo interrupt() e o isInterrupted()
vejam na API e no PJ que eu já postei como fazer isto.
Valeu, consegui fazer funcionar usando aquilo de modificar a variável boolean da classe, daí ela se encerra sosinha e de maneira limpa.
Opa, como é que voce fez?? :roll:
Posta um exemplo ai!!!
Abracos!
No meu caso eu tinha uma variável global da classe que extendia a thread, e no método run() eu tinha um laço infinito aí é só modificar essa variável que o programa se encerra sosinho.
public class classe extends Thread
{
boolean a = true;
public void run()
{
while(a)
{
//código aqui
você não precisava declarar a variável “a”. era só usar no lugar dela (dentro do while) o isInterrupted() e o cliente que quiser terminar esta thread deveria chamar o interrupt().