Como funciona o método Thread.join()?
sobes.tech IA
Resposta da IA
O método Thread.join() faz com que o thread atual aguarde até que o thread no qual join foi chamado termine.
Ao chamar otherThread.join(), o thread atual (por exemplo, o thread main) fica bloqueado até que otherThread conclua a sua execução (o método run() dele retorna o controlo).
Pode especificar um tempo limite em milissegundos ou em milissegundos e nanosegundos:
otherThread.join(long millis): espera no máximomillismilissegundos.otherThread.join(long millis, int nanos): espera no máximomillismilissegundos enanosnanosegundos.
Se o tempo limite especificado expirar e o thread ainda não tiver terminado, o thread atual é desbloqueado e continua a execução.
Thread.join() pode lançar uma InterruptedException se o thread atual for interrompido durante a espera. Nesse caso, a espera termina.
Exemplo:
// Criar e iniciar um novo thread
Thread worker = new Thread(() -> {
try {
// Simulação de trabalho
Thread.sleep(2000);
System.out.println("Thread worker terminou.");
} catch (InterruptedException e) {
e.printStackTrace();
}
});
worker.start();
try {
// O thread principal espera a conclusão do thread worker
worker.join();
System.out.println("O thread principal continua após o worker terminar.");
} catch (InterruptedException e) {
e.printStackTrace();
}
Importante: join() sincroniza a execução de um thread com a conclusão de outro. Isto é útil quando precisa garantir que uma tarefa específica seja concluída antes de continuar a execução noutro thread.