Comment fonctionne la méthode Thread.join() ?
sobes.tech IA
Réponse de l'IA
La méthode Thread.join() oblige le thread en cours d'exécution à attendre la fin du thread sur lequel join a été appelé.
En appelant otherThread.join(), le thread actuel (par exemple, le thread main) est bloqué jusqu'à ce que otherThread termine son exécution (sa méthode run() retourne).
Il est possible de spécifier un délai d'attente en millisecondes ou en millisecondes et nanosecondes :
otherThread.join(long millis): attend au maximummillismillisecondes.otherThread.join(long millis, int nanos): attend au maximummillismillisecondes etnanosnanosecondes.
Si le délai d'attente spécifié expire et que le thread n'a pas encore terminé, le thread actuel est débloqué et continue son exécution.
Thread.join() peut lancer une InterruptedException si le thread en cours est interrompu pendant l'attente. Dans ce cas, l'attente est interrompue.
Exemple :
// Créer et démarrer un nouveau thread
Thread worker = new Thread(() -> {
try {
// Simulation de travail
Thread.sleep(2000);
System.out.println("Thread worker terminé.");
} catch (InterruptedException e) {
e.printStackTrace();
}
});
worker.start();
try {
// Le thread principal attend la fin du thread worker
worker.join();
System.out.println("Le thread principal continue après la fin du worker.");
} catch (InterruptedException e) {
e.printStackTrace();
}
Important : join() synchronise l'exécution d'un thread avec la fin d'un autre. Cela est utile lorsque vous souhaitez garantir qu'une tâche spécifique soit terminée avant de continuer l'exécution dans un autre thread.