Sobes.tech
Middle

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 maximum millis millisecondes.
  • otherThread.join(long millis, int nanos): attend au maximum millis millisecondes et nanos nanosecondes.

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.