Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Cereal_Killer

O sleep() faz todas as Threads pararem?

Recommended Posts

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.