Maison >Java >javaDidacticiel >Comment attendre la fin de l'exécution de plusieurs threads avant de continuer ?
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>
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>
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!