Ola amigos, boa tarde
comecei a trabalhar com threads a pouco tempo e tenho uma duvida que esta corroendo muito o meu tempo
esse é meu metodo run() da minha classe, esse metodo é apenas um exemplo ele serve apenas para incrementar 1 a cada 1 segundo
na caixa de texto
public void run() {
try {
String telaControle = Thread.currentThread().getName();
int prodDia = 0;
while(!Thread.interrupted()){
Thread.sleep(1000);
prodDia++;
String produtoDia = Integer.toString(prodDia);
txtprodDia.setText(produtoDia);
}
} catch (Exception e) {
// TODO: handle exception
}
}
Vejam que ali em cima eu pego o nome da thread que esta executando >> ‘telaControle’.
Minha duvida é a seguinte, se eu tenho como controlar essa thread pelo o nome ou sei la, tipo fazer pausas por ex:
//dentro do mesmo laço
if(prodDia == 100){
// ai é aqui que eu precisaria parar ela
// ai a hr que eu precisar eu continuo executando a thread
}
Agradeço desde já
usa o seguinte comando para pausar:
[code]
try {
wait();
} catch (InterruptedException ex) {
Logger.getLogger(ThreadAssunto.class.getName()).log(Level.SEVERE, null, ex);
}[/code]
E para voltar você da o comando:
Ele notifica todas as threads que estão pausadas para voltarem.
Espero ter ajudado.
[quote=Pedro.Guerra]usa o seguinte comando para pausar:
[code]
try {
wait();
} catch (InterruptedException ex) {
Logger.getLogger(ThreadAssunto.class.getName()).log(Level.SEVERE, null, ex);
}[/code]
E para voltar você da o comando:
Ele notifica todas as threads que estão pausadas para voltarem.
Espero ter ajudado.[/quote]
Vlw ai man, obrigadão
mas tipo assim, esse notifyAll();, ele funciona a qualquer momento?? por ex:
eu tenho uma JText que vai decrementando até xegar a 0 e quando xegar a 0 ele para >>wait();
ai eu clico eu um botao que abre um JDialog com apenas um JText pra ser preenchido e ao clicar OK esse valor
vai pro JText que estava decrementando no JFrame, ai nesse caso eu deveria chamar o notifyAll pra continuar executando a Thread (continuando a decrementar)?!!
funciona dessa forma mesmo?
Obrigado
Sim, sim.
Quando vc da o wait(); ele pausa a thread no estado que ele parou.
O notifyAll(); vai pedir para todas as threads que estão paradas (pelo wait()) voltarem a funcionar de onde pararam.
Ele só começaria do zero a thread, se vc desse um novo run, ou instanciar um novo objeto thread novamente.
[quote=Pedro.Guerra]Sim, sim.
Quando vc da o wait(); ele pausa a thread no estado que ele parou.
O notifyAll(); vai pedir para todas as threads que estão paradas (pelo wait()) voltarem a funcionar de onde pararam.
Ele só começaria do zero a thread, se vc desse um novo run, ou instanciar um novo objeto thread novamente.[/quote]
Blz mano, obrigadão mesmo
agora eu entendi certinho como funciona