Thread dormir por tempo indeterminado e acordar

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 :slight_smile: )

[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 :slight_smile: )

[/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 :slight_smile: )

[/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