Finalize(), interrupt(), destroy() ?Qual usar?

2 respostas
F

Tô precisando saber o que utilizar pra terminar um thread???
tenho alguns threads que em determinado momento tenho que terminá-los… já tentei o finalize(), interrupt() e destroy(). Nenhum deu certo… o melhor foi o finalize(), pois não dava erro embora permitisse que a thread executasse mesmo depois da chamada do método…

if (comb < 1){
			try{
				System.out.println(" terminar "+this.getName()+"\n\n\n");
				this.interrupt();
			}catch(Exception ie){
				ie.printStackTrace();
			}
		}

2 Respostas

J

Erhm, já tentou o stop?

Editado: O stop está deprecated, vc pode ver detalhes aqui:
http://java.sun.com/j2se/1.5.0/docs/guide/misc/threadPrimitiveDeprecation.html

valeuz…

H

Olá fhenriques,

Tentando clarear a sua dúvida:

  • threads têm que ser interrompidas a partir de outras threads. Você está tentando uma autointerrupção com interrupt(), quando na verdade para uma autointerrupção basta um return de dentro do método run() da dita-cuja.

  • finalize() é chamado pelo Garbage Colector (GC) depois que o objeto é dereferenciado. O momento desta chamada é completamente incerto, sendo a critério do GC. Detalhe: os comandos dentro de finalize podem até mesmo ressuscitar o objeto órfão!.

  • pelas API’s da Sun, o método destroy() só é usado com servlets, no momento em que o servlet container fecha. Sua semântica é a de limpeza da aplicação (salvar dados, apagar arquivos temporários, etc.).

[]

Criado 1 de julho de 2005
Ultima resposta 4 de jul. de 2005
Respostas 2
Participantes 3