Ativando Thread

2 respostas
B

Olá, tenho as seguintes classes:

package acordandoThreadExterna;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingQueue;

public class Worker extends Thread{

	ControladorStatus control;
	BlockingQueue<Integer> work;
	int valor;
	
	public Worker(){
		this.control = new ControladorStatus(this);
		this.control.start();
		this.work = new LinkedBlockingQueue<Integer>();
	}
	
	public void run() {
		try {
			this.valor = this.work.take();
			System.out.println("RECEBI: " + this.valor);
			this.atualiza();
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	public void atualiza(){
		.......
	}
}
package acordandoThreadExterna;

public class ControladorStatus extends Thread{
	
	Worker worker;
	ControladorStatus (Worker worker) {
		this.worker = worker;
	}
	public void run() {
		while (true) {
			this.worker.atualiza();			
			try {
				wait(5000);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
}

Eu tenho a thread ControladorStatus, esta a cada 5s irá executar o método atualiza(), 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

2 Respostas

ViniGodoy

Sim, basta ativar outra thread idêntica a ControlardorStatus, e chamar atualiza num intervalo menor de tempo.

ViniGodoy

Embora eu desconfie que vc e o spiderman sejam a mesma pessoa por terem exatamente o mesmo IP, e estarem com roupagens diferentes para o mesmo problema, segue a resolução: http://www.guj.com.br/java/246974-error-monitor-thread

Criado 10 de julho de 2011
Ultima resposta 11 de jul. de 2011
Respostas 2
Participantes 2