Terminar um thread

3 respostas
H

Estou escrevendo um código onde devo terminar um thread, existe algum método pra que eu possa fazer isso? tipo asim um método stop, que a proposito já tentei mas não funcionou.
Conto com a ajuda de vocês.
Obrigado

H3sil

3 Respostas

H

Hesil,

Um método run como este não pode ser interrompido (que eu saiba):

public void run()
{
  while(true)
  {
     ... // código 
  }
}

A solução é algo assim:

public void run()
{
  while(!interupted())
  {
     ... // código 
  }
}

Para interromper é só chamar o método interrupt() a partir da thread principal.

Obs. 1: não confundir o método interrupted(), que é um teste interno, com isInterrupted(), que é um teste externo!

Obs. 2: muitos métodos da biblioteca, notadamente o método sleep(), já incluem internamente o teste interrupted() e lançam uma InterruptedException.

H

Vou escrever agora mesmo com interrupt, valew.

S

Você pode utilizar um atributo booleano para controlar a execução da Thread também…

private boolean ativo = true;

...

public void run()
{
    while (this.ativo)
   {
        System.out.println("ativo");
   }

        System.out.println("não ativo");
}

Sendo que o atributo booleano será modificado em outra parte da aplicação.

Criado 22 de julho de 2005
Ultima resposta 27 de jul. de 2005
Respostas 3
Participantes 3