Olá, estou com uma dúvida quanto a utilização de threads. Eu consigo ou posso criar dois “acordadores” de thread tipo wait(5000) e mais algum? Tenho o seguinte código:
Bom, tenho a thread acima, esta a cada 5s irá executar o método CalcCapacity(), eu consigo fazer com que outra thread externa ative esta mesma thread? Neste meu caso entao teria duas situação onde ela executa a cada 5s e também pode exetuar a cada 2s, 3s ou 1s
Consigo fazer isso? Alguem poderia me auxiliar.
Não sei se este post é no forum basico, mas como sou iniciante postei aqui.
se vc quiser que uma thread externa ative essa thread, ela deve ter o controle do while e não do sleep
no codigo que escrevi abaixo, a variável permite é controlada pela outra thread e revisada a cada 0,5 segundos
desse modo, enquanto permite for verdadeiro, vai dormir… qndo a outra thread quiser acordar essa, vai dar false no permite
e na outra thread vc controla de qto em qto tempo vc quer ver isso… 1s, 5s, 10s…
detalhe… o tempo das threads acontecerem não é preciso lembre-se disso… seu SO tem um “controle maior” sobre as threads do q vc ( vc pode querer despertar em 1s, o seu SO pode desperta-la em 3s )
Eu acho que não me expressei bem. O thread UpStatus pode ser executado em duas situações, a cada 5s ou quando uma thread externa ativar ela. Neste seu exemplo, faz isso. Desculpa amigo mas não entendi.
rogelgarcia
Chame o método notify() ou notifyAll() do seu objeto UpStatus
Acho que você tem que estar com o lock do objeto… não lembro bem… tipo synchronized(upStatus ) upStatus.notifyAll();
rogelgarcia
Eu colocaria a sua funcionalidade em outra classe.
Uma classe controla a funcionalidade e outra controla a thread.
(só uma questão organizacional)
S
spiderman
Como assim, explique melhor e exemplifique
rogelgarcia
Você fala a questão de organização?
Colocaria o calcCapacity(); em outra classe E COM LETRA MINUSCULA ( por exemplo uma classe Calculator)
Aí vc teria que fazer
calculator.wait(500);
e
calculartor.nofityAll();
Como disse é só questao organizacional… nao muda a funcionalidade
B
betowww
redr4gon poderia me dar um exemplo mais completa de funcionamento?