Comment exécuter plusieurs threads simultanément en Java ? Approche ExecutorService

Publié: 2021-10-09
Comment exécuter plusieurs threads simultanément en Java ? Approche ExecutorService

Reprenons cet exemple : Comment obtenir le statut Ping de n'importe quel point de terminaison HTTP en Java ?

Avez-vous remarqué l'exécution du thread pour cet exemple ? C'est séquentiel. What if you have 500 endpoints? Je parie que vous devez attendre au moins 5 minutes pour obtenir un résultat. Ce qui, j'en suis sûr, n'est pas la meilleure solution.

Maintenant quoi? La bonne question serait :

  • Comment exécuter plusieurs threads simultanément ?
  • Comment implémenter plusieurs threads en Java ?
  • Comment exécuter différents threads en Java ?
  • Java - Où est le didacticiel de programmation multithreading ?
  • Thread : Comment utiliser plusieurs threads pour accélérer le traitement ?

ExecutorService Approach est votre réponse.

Un exécuteur qui fournit des méthodes pour gérer la terminaison et des méthodes qui peuvent produire un futur pour suivre la progression d'une ou plusieurs tâches asynchrones.

Un ExecutorService peut être arrêté, ce qui entraînera le rejet de nouvelles tâches. Deux méthodes différentes sont fournies pour arrêter un ExecutorService. La méthode shutdown() permettra aux tâches précédemment soumises de s'exécuter avant de se terminer, tandis que la méthode shutdownNow() empêche le démarrage des tâches en attente et tente d'arrêter les tâches en cours d'exécution.

À la fin, un exécuteur n'a aucune tâche en cours d'exécution, aucune tâche en attente d'exécution et aucune nouvelle tâche ne peut être soumise. Un ExecutorService inutilisé doit être arrêté pour permettre la récupération de ses ressources.

La méthode submit étend la méthode de base Executor.execute ( java.lang.Runnable ) en créant et en renvoyant un Future qui peut être utilisé pour annuler l'exécution et/ou attendre la fin. Les méthodes invokeAny et invokeAll exécutent les formes d'exécution en bloc les plus couramment utilisées, exécutant une collection de tâches, puis attendant qu'au moins une, ou toutes, se terminent. (La classe ExecutorCompletionService peut être utilisée pour écrire des variantes personnalisées de ces méthodes.)

La classe Executors fournit des méthodes de fabrique pour les services d'exécution fournis dans ce package.

  • java – ExecutorService, comment attendre que toutes les tâches se terminent ?
  • Un guide du Java ExecutorService
  • Pool de threads Java - Explication ExecutorService

Vous trouverez ci-dessous un exemple Java simple qui explique l' usage of ExecutorService .

Sortir:

Vérifiez maintenant le résultat.

Cela devrait être en quelques secondes. J'espère que ça t'as aidé. Essayez de l'exécuter plusieurs fois et vous verrez peut-être un résultat différent car tous les threads s'exécutent en parallèle et quiconque obtient un résultat rapide, vous verrez le résultat affiché dans la console Eclipse.

Faites-le moi savoir pour toute question.