Interromper Thread

3 respostas
jherimum

Mestres do Java, por favor me ajudem.

Estou fazendo um servidor de impressao aqui no meu trampo. pra resumir a historia eu tenho uma serie de filas, e os relatorios sao submetidos a estas filas que atraves de um pool de threads cria os relatorios e os disponibiliza em uma pasta.
Pois bem, estou com a seguinte dificulade:

quando eu tenho uma thread que simplesmente chama um metodo que gerá o relatorio, o fato de chamar o metodo interrupt dessa thread não a faz parar. certo?
ou errado?
tem alguma coisa estranha nesse interrupt. vcs tem alguma ideia que que método eu achamo ou alguma outra solução?

eu sei que se ao inves de chamar o metodo que gerá o realtorio eu colocar algo do tipo:

while(true){
try{
Thread.sleep(1000)
}
catch(Exception){
}

}

a thread é parada.

Relamente estou num beco sem saída. me ajudem please

3 Respostas

ViniGodoy

O que vc quer fazer, exatamente? Interromper um trabalho de impressão que já começou, ou um que não começou ainda?

Não é possível e nem recomendado abortar uma thread.

O interrupt apenas manda um sinal para a thread, que faz com que waits e sleeps lancem uma interrupted exception e o método Thread.isInterrupted() passe a retornar true. Se quiser implementar algum comportamento de interrupção, você deve fazer você mesmo.

jherimum

isso mesmo. quero interromper uma impressao (do jasper) que esta em curso.

pq por exemplo se o usuario quiser parar uma fila que tenha alguma geracao de relatorio sendo feita ele teria q esperar muito tempo. quero parar a geracao do relatorio e fazer com q ele volte a fila.

mas minha intencao postando era saber se realmente eu podia simplesmente parar na porrada uma thread.

pelo jeito vou ter q buscar uma outra solucao

lina

Oi,

Ao utilizar o método sleep ou wait, a sua thread deverá ser sincronizada, ou seja utilizar as propriedades syncronized.

Pode ser por isso que sua thread ao ser interrompida não está funcionando… ela está dando interrupt em quem ?

Logo após o interrupt, sugiro que utilize o método notify() (que também deverá ser sincronizado).

Tchauzin!

Criado 22 de junho de 2009
Ultima resposta 23 de jun. de 2009
Respostas 3
Participantes 3