Maison >Java >javaDidacticiel >Comment garantir l'exécution du thread principal une fois plusieurs threads terminés ?
En attente de la fin de plusieurs threads
Dans le scénario que vous avez décrit, où plusieurs threads sont créés et chacun exécute la même tâche indépendamment , il devient nécessaire de trouver un moyen de mettre le thread principal en pause jusqu'à ce que tous les threads générés aient fini de s'exécuter. Ceci est essentiel pour garantir une bonne coordination et empêcher le thread principal de continuer avant que les threads secondaires ne soient terminés.
Une solution efficace consiste à créer un tableau d'objets Thread pour stocker tous les threads générés, à les démarrer simultanément, puis implémentant une boucle qui appelle la méthode join() sur chaque thread du tableau. La méthode join() bloque le thread appelant jusqu'à ce que le thread sur lequel il est appelé se termine.
En incorporant cette boucle dans votre classe DoSomethingInAThread, vous pouvez attendre de manière fiable que tous les threads secondaires se terminent avant de poursuivre l'exécution du thread principal :
<code class="java">// Array to store created threads private static Thread[] threads; public static void main(String[] args) { // Create an array to store the threads threads = new Thread[1000]; // Start all the threads for (int n = 0; n < 1000; n++) { Thread t = new Thread(new DoSomethingInAThread()); t.start(); // Save the reference to the created thread threads[n] = t; } // Wait for all threads to complete for (int i = 0; i < threads.length; i++) { threads[i].join(); }</code>
En modifiant la méthode main() comme indiqué ci-dessus, le thread principal ne procédera qu'une fois que tous les threads secondaires auront terminé leur exécution. Cette technique garantit que l'exécution du thread principal est synchronisée avec l'achèvement de tous ses threads enfants.
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!