Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

naofuieu

Interromper threads bloqueadas sem causar excessão

Recommended Posts

Olá, galera :D

 

A situação é a seguinte:

Eu tenho quatro threads em meu programa, mas todas executam em loop infinito... http://forum.imasters.com.br/public/style_emoticons/default/assobiando.gif

Na verdade, pra que elas não fiquem executando para sempre, eu não faço um while(true), e sim um while(algumacoisa) e na hora que eu quero que essas threads terminem, eu faço algumacoisa = false...

O problema é que uma das threads utiliza uma LinkedBlockingQueue e, como o nome diz, ela bloqueia a thread acessando ela em determinadas situações...

Além disso, outra faz uso de DatagramSockets. Então, eu fico nesse "loop infinito" esperando pacotes da rede (outro bloqueio)... <_<

 

Então, para que eu possa realmente fechar essa thread, eu acabo tendo que usar o método shutdownNow() de ExecutorService para forçar ela a fechar. Só que assim, eu acabo lançando uma InterruptedException na thread acessando a LinkedBlockingQueue e uma SocketException por ter que fechar o socket enquanto eu ainda estou esperando um pacote da rede.

 

Sendo que eu, num futuro próximo, posso restabelecer esse cenário de execução de threads, o que pode levar a mais exceções pipocando na minha tela.

 

Alguém tem uma solução sem gambiarras para isso, por favor? http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Título do tópico modificado:

 

De Vejam se isso é muito ruim

Para: Threads

Compartilhar este post


Link para o post
Compartilhar em outros sites

Detalhe, agora o título do tópico ficou genérico demais e não tem nada a ver com o subtítulo.

Agora está dando a entender que eu estou querendo saber como o shutdownNow() funciona, ou como se o método estivesse me dando problemas.

As duas opções passam longe do que eu queria saber.

 

Muito obrigado por fazer com que várias pessoas que poderiam responder a minha dúvida passem longe do meu tópico.

 

Você é demais http://forum.imasters.com.br/public/style_emoticons/default/worshippy.gif

<_<

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá naofuieu, me desculpe mas o título que havia sido colocado não especificava sua dúvida, peço que ao criar um novo tópico deixe claro no título seu real problema.

 

Neste caso coloquei o título como Threads pois pelo meu entendimento sua questão envolve o assunto Threads, caso não seja de seu agrado, peço que me envie algo sugestivo que seja diferente do primeiro título por MP.

 

Um grande abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Titulo/subtítulo alterado:

 

De: Threads

 

Para: Interromper threads bloqueadas sem causar excessão / Sendo que não tenho controle sobre o bloqueio

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.