como eu faço para deixar uma thread dormindo sem intervalo de tempo?
e como eu faço para acorda-la?
eu pretendo fazer isso ativando um actionPerformed de um botão que esta em outra classe.
como eu faço para deixar uma thread dormindo sem intervalo de tempo?
e como eu faço para acorda-la?
eu pretendo fazer isso ativando um actionPerformed de um botão que esta em outra classe.
Eu recomendaria usar alguma das calsses deste pacote:
http://docs.oracle.com/javase/6/docs/api/java/util/concurrent/package-summary.html
É mais estruturado (e dá menos dor de cabeça) que fazer isso que você quer.
Bom… Ao meu ver Vc ão precisar deixar ela “dormindo” , apenas desativada!
Quando precisar dela vc chama ela!
Mais se quiser mesmo assim eu faria um loop que se interroperia quando a variavel A fosse igual “1”.
Dai se quando vc executar o action define o "1’ para a variavel A!
Seria isso?
Abraços…
public class ClasseComMonitor {
public synchronized void metodo() {
while (condicao) {
wait();
}
//Condição não é mais satisfeita
ações...
notify();
}
}
Pois é, o uso de “wait/notify” e threads “puras” é algo que pode ser até ensinado, mas não deve ser usado na prática devido aos problemas que podem ocorrer porque não são coisas “estruturadas”.
O correto é identificar qual é o uso e tentar encaixar em um dos problemas que as classes de java.util.concurrent tentam resolver. Por exemplo, muitos problemas do tipo “N produtores / 1 consumidor” se resolvem com java.util.concurrent.BlockingQueue, por exemplo. (Provavelmente o caso do botão que você quer resolver é esse )
[quote=entanglement]Pois é, o uso de “wait/notify” e threads “puras” é algo que pode ser até ensinado, mas não deve ser usado na prática devido aos problemas que podem ocorrer porque não são coisas “estruturadas”.
O correto é identificar qual é o uso e tentar encaixar em um dos problemas que as classes de java.util.concurrent tentam resolver. Por exemplo, muitos problemas do tipo “N produtores / 1 consumidor” se resolvem com java.util.concurrent.BlockingQueue, por exemplo. (Provavelmente o caso do botão que você quer resolver é esse )
[/quote]
Vou tentar explicar melhor.
Eu tenho uma aplicação onde eu criei uma thread e outros frames normais.
quando eu clico em um botao de um determinado frame ele chama essa thread e começa a gerar processamento.
esta thread retorna varios resultados para o meu frame em uma tabela.
eu queria saber como eu faço para quando eu clicar em 1 botão deste meu frame ele pausar a thread e quando eu clicar em outro botão ele faça a thread acordar novamente.
Se for possível mostrar um exemplo seria melhor
[quote=lemvb][quote=entanglement]Pois é, o uso de “wait/notify” e threads “puras” é algo que pode ser até ensinado, mas não deve ser usado na prática devido aos problemas que podem ocorrer porque não são coisas “estruturadas”.
O correto é identificar qual é o uso e tentar encaixar em um dos problemas que as classes de java.util.concurrent tentam resolver. Por exemplo, muitos problemas do tipo “N produtores / 1 consumidor” se resolvem com java.util.concurrent.BlockingQueue, por exemplo. (Provavelmente o caso do botão que você quer resolver é esse )
[/quote]
Vou tentar explicar melhor.
Eu tenho uma aplicação onde eu criei uma thread e outros frames normais.
quando eu clico em um botao de um determinado frame ele chama essa thread e começa a gerar processamento.
esta thread retorna varios resultados para o meu frame em uma tabela.
eu queria saber como eu faço para quando eu clicar em 1 botão deste meu frame ele pausar a thread e quando eu clicar em outro botão ele faça a thread acordar novamente.
Se for possível mostrar um exemplo seria melhor[/quote]
Dê uma olhada em http://docs.oracle.com/javase/6/docs/api/java/util/concurrent/ExecutorService.html . Ou mesmo na BlockingQueue que o entanglement falou.
[]'s