naofuieu 0 Denunciar post Postado Abril 8, 2009 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
sublyer 0 Denunciar post Postado Abril 8, 2009 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
naofuieu 0 Denunciar post Postado Abril 8, 2009 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
sublyer 0 Denunciar post Postado Abril 9, 2009 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
sublyer 0 Denunciar post Postado Abril 9, 2009 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