Parar uma thread que eu nao tenho referencia

Olá,

Estou usando uma biblioteca, a qual utiliza algumas threads que sao criadas quando crio um dos objetos. Porem quando eu destruo esse objeto as threads nao morrem, só que eu nao tenho acesso a essas threads…
Como eu poderia finalizar essas threads???
Penso que seria atraves de uma chamada a JVM ou algum objeto que gerencia as threads da aplicacao…

Um exemplo de como pegar todas as Threads em execução pra fazer o que você quiizer:

public class TestThreads {

	public static void main( String[] args ) {
		
		Set<Entry<Thread,StackTraceElement[]>> traces = Thread.getAllStackTraces().entrySet();
		
		for ( Entry<Thread,StackTraceElement[]> entry : traces ) {
			System.out.printf("Thread: %s%n", entry.getKey());
			for ( StackTraceElement stack : entry.getValue() ) {
				System.out.printf("\tStack -> File: %s Class: %s Method: %s (%s)%n", 
						stack.getFileName(),
						stack.getClassName(),
						stack.getMethodName(),
						stack.getLineNumber());
			}
		}
		
	}
	
}

Valeu,

eu ja estava um tempo atras disso,

mas uma pergunta como vc acha que é a melhor maneira para eu parar um thread ?

Olá

Veja http://www.guj.com.br/posts/list/43061.java#228024

[]s
Luca

Se voce quer que todas essas threads morram a qualquer momento, depois que suas threads “principais” morrerem, basta usar o metodo setDaemon(true). Mas cuidado porque elas podem morrer no MEIO de algo importante… sem cleanup nem nada. Caso voce precise de uma morte limpa para as threads, faça como o luca indiciou: while(rodando) dando catch em InterruptedException caso tenha wait/sleep.

Paulo Silveira,

Obrigado pela ajuda. O meu grande problema é estar usando uma biblioteca proprietaria, a qual eu nao tenho acesso ao fonte e nao tenho muitos recursos (Ex. Herança) para modifica-lá, realmente o setDaemon seria util se eu tivesse acesso a Thread, mas esse metodo (pelo que sei) so pode ser chamado antes da thread ser iniciada, quanto a solucao dada pelo Luca tb é muito boa, é o que faço quando crio threads, mas no caso como ja disse nao tenho acesso aos fontes e nem posso tentar “sobrescrever o run” (override do metodo).

Obrigado a todos, já consegui resolver meu problema…