Maison  >  Article  >  Java  >  Comment s'assurer que le thread principal attend la fin de plusieurs processus threadés ?

Comment s'assurer que le thread principal attend la fin de plusieurs processus threadés ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-31 02:31:29643parcourir

How to Ensure the Main Thread Waits for Completion of Multiple Threaded Processes?

En attente de la fin de plusieurs processus threadés

Dans cet extrait de code, vous avez créé plusieurs threads, chacun exécutant une tâche dans son propre thread d'exécution. Pour vous assurer que le thread principal attend que tous les sous-threads terminent leur exécution avant de continuer, vous pouvez implémenter l'approche suivante :

  1. Stocker les threads dans un tableau : Créer un tableau pour stocker tous les threads créés. Cela garantit un suivi organisé de leur statut d'achèvement.
  2. Démarrer tous les threads : Parcourez le tableau des threads et démarrez chaque thread à l'aide de la méthode start().
  3. Rejoignez les threads dans une boucle : Après avoir démarré tous les threads, ajoutez une boucle pour rejoindre chaque thread du tableau. La méthode join() bloque le thread appelant (dans ce cas, le thread principal) jusqu'à ce que le thread cible termine son exécution.
<code class="java">// ... (code as before)

public class DoSomethingInAThread implements Runnable {

    public static void main(String[] args) {
        Thread[] threads = new Thread[1000];  // Assume 1000 threads for example
        
        // Start all threads
        for (int n = 0; n < 1000; n++) {
            threads[n] = new Thread(new DoSomethingInAThread());
            threads[n].start();
        }
        
        // Wait for all threads to complete
        for (int i = 0; i < threads.length; i++) {
            threads[i].join();
        }
    }

    public void run() {
        // ... (code as before)
    }
}</code>

En utilisant la méthode join(), le thread principal bloque jusqu'à ce que tous les sous-threads aient terminé leur exécution, en veillant à ce que votre programme attende la fin de toutes les tâches avant de poursuivre le code qui suit la boucle. Cette approche vous donne le contrôle et garantit que les ressources sont libérées et que le programme se termine correctement.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn