Maison >Java >javaDidacticiel >Comment garantir l'exécution du thread principal une fois plusieurs threads terminés ?

Comment garantir l'exécution du thread principal une fois plusieurs threads terminés ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-28 02:50:02331parcourir

How to Ensure Main Thread Execution After Multiple Threads Complete?

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!

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