Maison  >  Article  >  Java  >  Java utilise la fonction join() de la classe Thread pour implémenter la synchronisation des threads

Java utilise la fonction join() de la classe Thread pour implémenter la synchronisation des threads

王林
王林original
2023-07-25 19:27:191079parcourir

Java utilise la fonction join() de la classe Thread pour réaliser la synchronisation des threads

Dans la programmation multithread Java, la synchronisation des threads est un concept important. Dans certains scénarios, nous souhaitons que les threads s'exécutent dans un ordre spécifique ou qu'ils attendent que les autres threads terminent leur exécution avant de continuer. La classe Thread de Java fournit la fonction join() pour implémenter la synchronisation des threads. La fonction

join() est une méthode fournie par la classe Thread. Sa fonction est d'attendre que le thread termine son exécution avant de continuer. Lorsqu'un thread appelle la méthode join() d'un autre thread, il sera bloqué jusqu'à ce que le thread cible termine son exécution, puis l'exécution pourra continuer.

Ce qui suit est un exemple de code qui utilise la fonction join() pour réaliser la synchronisation des threads :

public class JoinExample {
    public static void main(String[] args) throws InterruptedException {
        Thread t1 = new Thread(new MyRunnable(), "Thread1");
        Thread t2 = new Thread(new MyRunnable(), "Thread2");
        
        // 启动线程
        t1.start();
        t2.start();
        
        // 使用join()函数实现线程同步
        t1.join();
        t2.join();
        
        System.out.println("All threads have finished executing.");
    }
}

class MyRunnable implements Runnable{
    @Override
    public void run() {
        System.out.println(Thread.currentThread().getName() + " is running.");
        try {
            Thread.sleep(2000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println(Thread.currentThread().getName() + " has finished executing.");
    }
}

Dans le code ci-dessus, nous avons créé deux threads t1 et t2 et les avons démarrés à l'aide de la méthode start() de la classe Thread. Ensuite, utilisez la méthode join() pour réaliser la synchronisation des threads, c'est-à-dire attendez que les threads t1 et t2 terminent leur exécution avant de continuer à exécuter le thread principal. Enfin, imprimez le message indiquant que tous les threads ont terminé leur exécution.

Exécutez le code ci-dessus et vous obtiendrez le résultat suivant :

Thread1 is running.
Thread2 is running.
Thread1 has finished executing.
Thread2 has finished executing.
All threads have finished executing.

Comme le montre le résultat, les threads t1 et t2 s'exécutent alternativement et le thread principal continue son exécution une fois son exécution terminée.

En utilisant la fonction join() de la classe Thread, nous pouvons facilement réaliser la synchronisation des threads. Il peut garantir que les threads s'exécutent dans l'ordre que nous spécifions, ou attendre que les autres threads terminent leur exécution avant de continuer. Ceci est très utile pour certains scénarios qui nécessitent une coopération entre les threads, comme attendre dans le thread principal que tous les sous-threads terminent leur exécution avant de traiter les résultats.

Il convient de noter qu'InterruptedException peut être levée lors de l'appel de la fonction join(). Nous devons la gérer dans le code pour éviter les exceptions qui provoquent une interruption du programme.

Résumé : Grâce à la fonction join() de la classe Thread, nous pouvons réaliser la synchronisation des threads et attendre que les autres threads terminent leur exécution avant de continuer. Ceci est très utile dans la programmation multithread, qui peut garantir que les threads s'exécutent dans l'ordre que nous spécifions, ou attendre que les autres threads terminent leur exécution avant de continuer. Il convient de noter qu'InterruptedException peut être levée lors de l'appel de la fonction join(), et nous devons la gérer.

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