Maison  >  Article  >  Java  >  Comment faire en sorte qu'un thread Java attende la sortie d'un autre thread ?

Comment faire en sorte qu'un thread Java attende la sortie d'un autre thread ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-11 17:59:02369parcourir

How to Make a Java Thread Wait for Output from Another Thread?

Attente de la sortie du thread en Java : un dilemme de synchronisation

Dans une application Java multithread, la coordination de l'exécution de plusieurs threads est cruciale pour garantir l’intégrité des données et la réactivité des applications. Lorsqu’un thread s’appuie sur la sortie d’un autre, des mécanismes de synchronisation entrent en jeu. Un de ces scénarios est décrit dans la question suivante :

Question :

Comment faire attendre un thread Java (ci-après dénommé « thread d'application ») jusqu'à ce qu'un autre thread (le "thread db") ait terminé une opération et soit prêt à fournir une sortie ? Le thread de base de données doit rester actif pendant toute la durée de vie de l'application et les deux threads doivent s'exécuter simultanément. Bloquer le thread de l'application jusqu'à ce que le thread de base de données soit prêt est une solution acceptable.

Réponse :

La clé pour résoudre ce problème de synchronisation réside dans l'utilisation d'un CountDownLatch. CountDownLatch est une construction de synchronisation qui permet à plusieurs threads d'attendre qu'un nombre spécifique soit atteint avant de continuer. Dans ce cas :

// Create a CountDownLatch with a counter of 1
CountDownLatch latch = new CountDownLatch(1);

Dans le thread de l'application où l'attente est requise :

// The app thread waits for the db thread to complete
latch.await();

Dans le thread db, une fois l'opération terminée et la sortie prête :

// The db thread signals the app thread to proceed
latch.countDown();

Ce mécanisme garantit que le thread d'application ne continuera pas tant que le thread de base de données n'aura pas terminé son opération. Le thread de l'application attendra que le nombre dans CountDownLatch atteigne zéro, permettant aux deux threads de s'exécuter simultanément une fois que le thread de base de données est prêt. Cette approche fournit une solution propre et efficace pour la synchronisation des threads, préservant à la fois l'exécution des threads et l'intégrité des données.

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