Estava estudando Threads para a certificação e ainda não entendi direito como funciona o método join() de Thread…
Axei meio ambígua a descrição do método… já no livro da Kathy
Aí já deu pra endender um pouco melhor… só fiquei com dúvida numa coisa: A Thread que está sendo executada no momento espera a que chamou join() ou é o contrário ?
Se alguém puder me explicar melhor ou me dar um exemplo eu vou ficar agradecido
quando vocÊ dar um join ai vc está dizendo… olha a thread atual so vai executar depois que o join terminar.
..
public static void main(String..args){
.... // aqui tem o codigo de criacao da sua thread
try{
th.join();
}catch(Exception e){}
System.out.println("XX");
}
ele ta dizendo ai thread main… so é executada apos o join concluir sua tarefa… ng antes disso pode executar…
Acho que “join” é mais fácil explicar com um desenho. Mas basicamente:
Seu programa está executando na thread X (pode ser a thread principal do sistema, que é iniciada pelo próprio Java)
Essa thread X inicia uma thread Y, usando algo como:
Thread Y = new Thread(new Runnable () { public void run() { ... } });
Y.start(); // iniciando a thread Y
...
A thread X faz alguma coisa, e então quer esperar a thread Y terminar (morrer). Então a thread X tem de fazer:
...
System.out.println ("Eu sou a thread X e vou esperar a thread Y terminar (se é que ela já não terminou)");
Y.join(); // isto faz com que a thread X pare e espere até a thread Y terminar.
System.out.println ("Eu sou a thread X e esperei até que a thread Y terminasse.");