Quelle est l'utilisation d'une piscine de fil? Y a-t-il un bon exemple réel?
piscines de fil à partir du Java Tutoriels a un bon aperçu:
L'utilisation de threads de travailleurs minimise les frais généraux dues à la création de fil. Les objets de threads utilisent une quantité importante de mémoire et dans une application à grande échelle, alloué et transposant de nombreux objets de threads crée une surcharge de gestion de la mémoire importante.
Une recherche simple Google entraînera une mine d'informations concernant Java piscines de fil et piscines de fil en général.
Voici quelques liens utiles:
Les piscines de threads ne sont utiles que dans un type de situation client serveur où le nombre/occurrence de demandes de client ne peut être déterminé/prédit.
Dans ce scénario, la création d'un nouveau fil à chaque fois qu'une demande de client est faite comporte deux avantages:
1) Latence de temps d'exécution pour la création de fil: la création d'un thread nécessite un certain temps, le travail réel ne démarre pas dès que la demande se trouve. Le client peut remarquer un léger délai.
Ces critères sont cruciaux dans des systèmes interactifs, où le client attend une action immédiate.
2) Utilisation incontrôlée des ressources système: les threads consomment des ressources système (mémoire, etc.), le système peut donc être à court de ressources en cas de flux sans précédent de demandes de clients.
Les piscines de fil adressent les préoccupations ci-dessus par:
[.____] 1) Création de nombre spécifié de threads sur le démarrage du serveur au lieu de les créer pendant le temps d'exécution.
[.____] 2) limiter le nombre de threads qui fonctionnent à une heure donnée.
Remarque: Ce qui précède est applicable aux piscines de fil de tailles fixes.
Vous pouvez assumer des threads comme des travailleurs réels et des piscines de fil pour être un groupe de travailleurs. Vous pouvez créer plusieurs groupes pour diverses raisons telles que la priorité, la finalité, etc., tandis qu'un pool peut être destiné aux tâches générales telles que les horaires de fond, la diffusion par courrier électronique, etc. Il pourrait y avoir un pool de traitement de transaction pour traiter simultanément plusieurs transactions. En cas de service exécuteur, je suis sûr que vous ne souhaitez pas retarder les travaux transactionnels à remplir après d'autres activités non critiques telles que la diffusion des courriels de confirmation ou des activités de maintenance de la base de données ne sont pas terminées. Vous pouvez les séparer dans des piscines et les maintenir de manière indépendante. C'est une réponse très simpliste sans entrer dans des jargons techniques. Cordialement, KT