Explicações Join()

1 resposta
LuanMesquita

Olá Pessoal,

estou quase acabando a apostila da Caelum FJ - 11, más estou com uma
difuldade, aprender o que faz o metodo join() da classe Thread.

public class ProduzSQL implements Runnable{
private int comeco;
private int fim;
private Collection<String> sqls;
public ProduzSQL(int comeco, int fim, Collection<String> sqls) {
this.comeco = comeco;
this.fim = fim;
this.sqls = sqls;
}
public void run() {
for (int i = comeco; i < fim; i++) {
sqls.add("SQL"+i);
}
}
}
public class BancoDeDados {
public static void main(String[] args) throws InterruptedException {
Collection<String> sqls = new HashSet<String>();
ProduzSQL p1 = new ProduzSQL(0, 10000, sqls);
Thread t1 = new Thread(p1);

ProduzSQL p2 = new ProduzSQL(10000, 20000, sqls);
Thread t2 = new Thread(p2);
ProduzSQL p3 = new ProduzSQL(20000, 30000, sqls);
Thread t3 = new Thread(p3);
t1.start();
t2.start();
t3.start();

t1.join();
t2.join();
t3.join();
System.out.println("Threads produtoras de SQLs finalizadas!");

for (int i = 0; i < 15000; i++) {
if (!sqls.contains("SQL" + i)) {
throw new IllegalStateException("não encontrei a SQL" + i);
}
}

if (sqls.contains(null)) {
throw new IllegalStateException("não devia ter null aqui dentro! nao inserimos null");
}
System.out.println("Fim da execucao com sucesso");
}
}

Então Pessoal gostaria que vocês me explicassem qual é a função do join().

abraço a todos.

1 Resposta

georgesq
t1.join();
t2.join();
t3.join();
System.out.println("Threads produtoras de SQLs finalizadas!");

a thread principal main só irá ser executada após a finalização das 3 thread´s em execução

veja

http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Thread.html#join%28%29

Criado 28 de fevereiro de 2011
Ultima resposta 1 de mar. de 2011
Respostas 1
Participantes 2