Como parar uma Thread?

5 respostas
R

Ola pessoal… depois de iniciado uma thread nao tem mais como para ela ? por exemplo… estou tentando usar essas funcoes destroy(); stop(); suspend() mas todos essas funcoes estao Deprecated.
Portanto existe uma forma de interromper a uma Thread ja inicializada ?

5 Respostas

J

faça a execução do metodo run acabar. :slight_smile:
isso faz a Thread parar de excutar.

[]'s

R

nao da pra fazer a execução do metodo run acabar, pois este fica aquardando uma resposta via socket, e se o cliente nao responder a tread fica processando !

Gostaria de saber porque existe tantas funcoes com o mesmo objetivo e estao todas deprecated ! nao faz sentido :?

R

Desculpa… acho que posso usar a funcao interrupt().
tava lendo esse link… nao sou muito bom de ingles mas explica um pouco… http://java.sun.com/j2se/1.5.0/docs/api/

ainda tenho umas duvidas porque existe tantos metodos deprecated mas tudo bem

*Editado o link tava errado
http://java.sun.com/j2se/1.5.0/docs/guide/misc/threadPrimitiveDeprecation.html

L

Olá

ronildobraga:
porque existe tantos metodos deprecated mas tudo bem

Porque nem todo mundo pensa igual aos caras da Microsoft que lançam novas versões incompatíveis com a anterior.

O que está como deprecated geralmente tem um motivo bem claro e se você ainda não achou é porque ainda não procurou.

Há diversas maneiras de parar uma thread. Dê uma estudada um qualquer tutorial básico que isto geralmente é ensinado.

Dois modos diferentes:

  1. Setar uma flag como true quando quiser parar
private volatile boolean fim = false;
    . . . .
   public void run () {
      while (!fim) {
           . . .
      }
   }

   public void setFim() {
       fim = true;
   }
  1. Usar o método interrupt() quando quiser parar
. . . .
   public void run () {
      while (!isInterrupted()) {
           . . .
      }
   }

[]s
Luca

R

Luca:

Porque nem todo mundo pensa igual aos caras da Microsoft que lançam novas versões incompatíveis com a anterior.

O que está como deprecated geralmente tem um motivo bem claro e se você ainda não achou é porque ainda não procurou.
Luca


Acho que isso explica o porque de tantas funcoes deprecated. Obrigado e desculpa o incomodo, preferi ler o javadoc do que olhar um tutorial, mas creio que o javaalmac possa me ajudar melhor nessas situações entao.

O interrupt ja soluciona o problema ! mas achei interessante em usar isso: private volatile boolean fim = false;

Abraços

Criado 6 de outubro de 2006
Ultima resposta 6 de out. de 2006
Respostas 5
Participantes 3