Controle de threads no Swing[RESOLVIDO]

4 respostas
wippeldigo

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á

4 Respostas

P
usa o seguinte comando para pausar:
try {
    wait();
} catch (InterruptedException ex) {
    Logger.getLogger(ThreadAssunto.class.getName()).log(Level.SEVERE, null, ex);

}
E para voltar você da o comando:
notifyAll();
Ele notifica todas as threads que estão pausadas para voltarem.

Espero ter ajudado.

wippeldigo
Pedro.Guerra:
usa o seguinte comando para pausar:
try {
    wait();
} catch (InterruptedException ex) {
    Logger.getLogger(ThreadAssunto.class.getName()).log(Level.SEVERE, null, ex);

}
E para voltar você da o comando:
notifyAll();
Ele notifica todas as threads que estão pausadas para voltarem.

Espero ter ajudado.

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

P

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.

wippeldigo

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.

Blz mano, obrigadão mesmo
agora eu entendi certinho como funciona

Criado 24 de setembro de 2012
Ultima resposta 24 de set. de 2012
Respostas 4
Participantes 2