Thread - Método de isntância join()

4 respostas
diegohsi
class JoinRunnable implements Runnable {
	int cont = 0;
	public void run() {
		for(int i = 0; i < 10; i++) {
			cont++;
			System.out.println("" + i + " " + Thread.currentThread().getName());
		}
	}
}

class ThreadTesteJoin {
	public static void main(String[] args) {
		JoinRunnable sr = new JoinRunnable();
		Thread t1 = new Thread(sr);
		t1.start();
		Thread t2 = new Thread(sr);
		t2.start();
		Thread t3 = new Thread(sr);
		t3.start();
		
		for(int i = 0; i <10; i++) {
			System.out.println("main: " + i);	
		}
		
		try{
			t1.join();
			t2.join();
			t3.join();
		} catch(InterruptedException e) {}
	}
}

Pessoal,
Referente ao meu código, o que entendi sobre join() é: ele coloca a thread que esta sendo executada atras da instancia que chamou join() no caso t1 t2, t3, então a Thread main teria que ir digamos "pro final do pool e ser executada por ultimo, certo ou errado", não entendi a saida desse código.

4 Respostas

brunorota

Essa saída me parece imprevisível por causa desse for antes do join, as threads podem começar a ser executadas a qualquer momento

diegohsi

Certo, elas podem começar a executar a qualquer momento, mias na hora que algum método join for encontrado o agendador coloca essa thread apos a instancia que chamou join e ela so retornará quando a instancia de thread que chamou join ser finalizada.

brunorota

Sim

Quando um método join é chamado ele faz com que a thread seje executada por completo.

diegohsi

Ainda continuo não entendendo a saida. :?:

Criado 12 de maio de 2011
Ultima resposta 12 de mai. de 2011
Respostas 4
Participantes 2