O sleep() faz todas as Threads pararem?
Fala pessoal,
Estou criando um processamento paralelo usando Threads. Uso 3 delas, chamadas "p1", "p2", "c1".
Dentro do método run() de cada uma, em certos pontos aparece uma janela perguntando se a thread deve ser interrompida ou não.
Classe "p1":
public void run(){
// Gera item
ProduzItem();
// Interrompe o processamento
Escalonador.Interrompe(threadName);
// Gera outro item
ProduzItem();
}Classe "Escalonador":
// Interrompe
public static void Interrompe(String threadName) {
// Instancializando a nova janela
int option = 0;
// Pega a opção do usuário
option = JOptionPane.showConfirmDialog(null, "Deseja "+
"interromper o processo " + threadName + "?"+
"\n Original:" +Thread.currentThread().getName(), "Escalonador",
JOptionPane.YES_NO_OPTION);
// Se quer interromper o processo
if (option == 0){
try {
// Pára a thread
if (threadName.equals("p1")){
p1.sleep(6000);
} else if (threadName.equals("p2")){
p2.sleep(6000);
} else if (threadName.equals("c1")){
c1.sleep(6000);
}
} catch (InterruptedException ex) {
System.out.println("Deu pau!!!");
}
}
}Classe "Escalonador":
public static void ReceiveThreads(Runnable prod1,
Runnable prod2, Runnable cons1){
// Instancializando a Thread
Thread p1 = new Thread(prod1, "p1");
Thread p2 = new Thread(prod2, "p2");
Thread c1 = new Thread(cons1, "c1");
// Inicia a thread
p1.run();
p2.run();
c1.run();
}O problema é que toda vez que eu uso o sleep(), todas as Threads param de executar. Elas ficam esperando o sleep() acabar para continuarem a trabalhar.
Como resolver isso?
Valeu http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif
Discussão (1)
Carregando comentários...