Maison > Java > javaDidacticiel > le corps du texte

Comment attendre la fin de l'exécution de plusieurs threads avant de continuer ?

Linda Hamilton
Libérer: 2024-10-27 10:17:03
original
300 Les gens l'ont consulté

How to Wait for Multiple Threads to Finish Execution Before Proceeding?

Comment synchroniser l'exécution multithread

Dans les applications multithread, il est souvent nécessaire de coordonner l'exécution de tâches parallèles. Cet article explore une méthode permettant d'attendre la fin d'un groupe de discussions avant de continuer.

Le problème :

Considérez le code suivant :

<code class="java">public class DoSomethingInAThread implements Runnable {...}

public static void main(String[] args) {
    for (int n=0; n<1000; n++) {
        Thread t = new Thread(new DoSomethingInAThread());
        t.start();
    }
    // wait for all threads' run() methods to complete before continuing
}</code>
Copier après la connexion

Dans cet exemple, plusieurs nouveaux fils de discussion sont créés et démarrés. Cependant, la méthode main() continue l'exécution immédiatement, sans attendre que ces threads terminent leurs tâches.

La solution :

Pour synchroniser l'exécution, nous pouvons créer un tableau de références de thread, puis utilisez la méthode join() sur chaque objet thread. Cela bloque le thread actuel jusqu'à ce que le thread cible ait terminé son exécution :

<code class="java">import java.lang.Thread;

public class DoSomethingInAThread implements Runnable {...}

public static void main(String[] args) {
    Thread[] threads = new Thread[1000];
    for (int n=0; n<threads.length; n++) {
        threads[n] = new Thread(new DoSomethingInAThread());
        threads[n].start();
    }
    for (Thread t: threads) {
        t.join();
    }
}</code>
Copier après la connexion

Dans ce code révisé, la méthode main() crée un tableau de références de thread et démarre chaque thread. Il entre ensuite dans une boucle qui appelle join() sur chaque thread du tableau. Cela garantit que tous les threads terminent leurs tâches avant que la méthode main() ne continue.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!