J'ai un projet Java où j'ai besoin de faire fonctionner les choses en parallèle. Je fais cela avec des exécuteurs. La chose est, j'ai besoin d'utiliser des exécuteurs dans de nombreux endroits. Devrais-je favoriser le passage de quelques exécuteurs pour faire le travail (oublier de limiter le nombre global de threads pour un moment) ou est-il préférable de créer les exécuteurs là où j'en ai besoin?Dois-je limiter le nombre d'exécutants que j'ai?
Répondre
Il n'y a pas de règle stricte qui vous dira combien d'exécuteurs doivent être utilisés. Une chose, cependant peut être recommandée. Utilisez un mécanisme ou un cadre d'injection de dépendance pour injecter des implémentations d'exécuteur. Cela permettra un remplacement et une configuration rapides et faciles des exécuteurs utilisés.
Ce à quoi vous devez vraiment penser est de contrôler le nombre de threads qui fonctionnent sur tous les Executors que vous créez.
Le nombre de threads que vous créez sur chaque exécuteur sera fonction de la fréquence d'arrivée et de la durée prévue (temps de traitement) de chaque tâche soumise. Avoir une file d'attente par type de tâche logique vous permet d'ajuster l'exécuteur pour cette tâche, de sorte que vous n'ayez pas plus de threads que nécessaire, et vous pouvez toujours suivre le débit de la tâche attendue.
Si vous avez un Executor monolithique partagé à travers toutes les étapes de traitement de votre application, il devient beaucoup plus difficile à régler.
SEDA est un modèle de concurrence typique qui reflète ce principe de file d'attente par étape de traitement.
Dans certains cas, il est logique d'avoir un exécuteur partagé, par exemple pour les tâches planifiées peu fréquentes, ad hoc ou de faible priorité.
Mes tâches ne font rien la plupart du temps, donc il n'est pas nécessaire de limiter le nombre de threads "en cours" d'exécution, et il n'y a pas beaucoup d'exécution. Si les discussions avaient travaillé dur, cependant, je suis entièrement d'accord avec vous. –
Peu importe s'ils effectuent beaucoup de traitement la plupart du temps, il reste à savoir si vous vous souciez ou non si un type de tâche dans l'application peut entraîner un retard dans l'adoption d'un autre type de tâche. À la fin de la journée, chaque exécuteur est lié à un ou plusieurs threads. Êtes-vous heureux que ceux-ci soient partagés entre différents types de tâches? – Joel
- 1. ASP.NET Limiter le nombre téléchargement
- 2. Comment limiter le nombre de processus?
- 3. limiter le nombre d'images à la suite?
- 4. Comment limiter le nombre de résultats obtenus?
- 5. Limiter le nombre de révisions dans Couchdb
- 6. Limiter le nombre de caractères dans l'entrée
- 7. Limiter le nombre de processus créés
- 8. Limiter le nombre de sections de configuration
- 9. Limiter le nombre de caractères dans JTextField
- 10. Limiter le nombre de résultats dans JPQL
- 11. Comment limiter le nombre d'emails à envoyer
- 12. imap_search limiter le nombre de messages retournés
- 13. Dois-je utiliser JAI?
- 14. comment limiter le nombre de données dans le mot
- 15. Limiter le nombre de vignettes sur facebook partager
- 16. Limiter le nombre de vues par jour dans Django
- 17. jQuery Sortable - Limiter le nombre d'éléments dans la liste
- 18. Facebook fb: fan - limiter le nombre de messages affichés
- 19. Limiter le nombre d'éléments de la galerie sorties WordPress
- 20. Limiter le nombre de mots avec l'expression régulière
- 21. Expression régulière pour limiter le nombre de caractères à 10
- 22. Limiter le nombre de threads dans IMagick (PHP)
- 23. mysql sélectionnez la déclaration et de limiter le nombre d'enregistrements
- 24. Limiter le nombre de traitement parallèle d'une servlet
- 25. Limiter le nombre d'appels de service dans une application RESTful
- 26. Comment limiter le nombre de valeurs de publication sur UpdatePanel?
- 27. Comment limiter le nombre d'éléments perdus pour une boîte?
- 28. Comment limiter le nombre d'éléments affichés dans html.dropdownlist?
- 29. Comment limiter le nombre d'instances d'un service WCF dans IIS?
- 30. Compter et limiter le nombre d'utilisateurs sur mon application
Ok. Actuellement, je fais quelque chose de similaire, mais à la main. Quand vous avez une structure d'objet plate, c'est bon. Si vous en avez un profond, je pense que vous préférez avoir un cadre pour vous, comme vous le suggérez. –