Oi, tenhum um objeto (JDialog), nele criei uma subclasse que extende uma thread que deve ficar executando enquanto o formulario estiver aberto. O problema eh que depois de fechar o formulario, a thread continua rodando…
Embora chama o interrupt() no evento windowClosing, a thread continua executando, e sei que o t.interrupt() foi chamado, pq coloquei o println(“fechando…”) antes de chama-lo, ele imprime a msg FECHANDO… e depois continua printando os . que a minha trhread tah printando…
Kknd
Você precisa fazer uma 'flag" para controlar o fluxo no loop. Pode ser assim:
while(formularioTaAberto)façatalcoisa
Daí quando ele fechar, o loop vai acabar e a thread se encerrará “naturalmente”.
lah no windowClosing eu toh chamando t.fecha() e dah certo, mas gostaria de ter outro meio, pra falar a verdade, mesmo chamando o t.fecha() nao estou bem certo se a thread continua ou nao na memoria…
m4des
me corrijam se eu estiver errado, mas tente usar o System.gc() pra dar uma limpada
Paulo_Silveira
eh exatamente pra isso que se usa a IterruptedException. dentro do seu catch dessa exception faca sinalFechar=true, e chame o t.interrupt naquele seu listener.
pronto.
m4des
Pessoal o System.gc() seria conveniente em uma aplicação onde se esta interrompendo um Thread?
kemperacc
Paulo Silveira:
eh exatamente pra isso que se usa a IterruptedException. dentro do seu catch dessa exception faca sinalFechar=true, e chame o t.interrupt naquele seu listener.