Comunicação entre Threads

2 respostas
danielfns

Boa noite!
Estou desenvolvendo uma funcionalidade e estou com o seguinte problema, acredito que não seja necessário postar o código.

Tenho duas Threads(implementação de Runnable) inner class, a thread A é responsável por mostrar uma espécie de apresentação de slides, enquanto a thread B monitora um diretório qualquer, caso tenha algo novo nesse diretório(imagens, videos etc) a thread B deve pausar a thread A e mostrar o conteúdo encontrado.
Quando o conteúdo executado pela thread B terminar, a mesma irá chamar novamente a thread A, que deve continuar a apresentação normalmente de onde parou.

O problema é que não consigo parar de maneira correta a thread A, já tentei o seguinte:

  • Usando o wait() de dentro da thread B para parar a A, a thread B fica esperando infinitamente;
  • Usando o .interrupt() a thread A para, mas não consigo faze-la voltar;

Acredito que seja algum conceito de thread que eu esteja omitindo… por isso peço a ajuda de vocês.

Abraço.

2 Respostas

E

Primeiro, usar “wait” e “interrupt” é fria. Eu aconselharia as duas threads compartilharem um semáforo - veja as classes de java.util.concurrent. É que o “wait” e mais ainda, o “interrupt” são de nível muito baixo e difíceis de usar.

fantomas

Oi Daniel,

Dá uma olhada neste link (existem outros): http://www.exampledepot.com/egs/java.lang/StopThread.html

Para parar uma thread o indicado é você utilizar uma variável para controlar a execução dentro do método run().

Fique atento para não ficar criando threads desnecessáriamente, tente reutilizar a thread. Quando o objeto não for mais necessário atribua null a sua referencia para garantir que o GC irá disponibilizar o espaço utilizado por ele.

flws

Criado 23 de novembro de 2010
Ultima resposta 24 de nov. de 2010
Respostas 2
Participantes 3