J'essaie de comprendre le point en spécifiant des tailles de noyau et de taille maximale séparées pour ThreadPoolExecutor de Java 5. Ma compréhension est que le nombre de threads est seulement augmenté une fois la file d'attente est pleine, ce qui semble un peu en retard (au moins avec des files d'attente plus grandes).Quand est-ce une bonne idée de spécifier des tailles de pool séparées et maximales dans ThreadPoolExecutor?
est-il pas que je suis soit heureux d'allouer un plus grand nombre de threads aux tâches, dans ce cas, je pourrais simplement augmenter la taille du pool de base; ou je ne suis pas vraiment disposé à le faire, auquel cas je devrais plutôt avoir une plus grande file d'attente? Qu'est-ce qu'un scénario où des tailles de noyau et de taille maximale distinctes sont utiles?
Mais alors je pourrais courir avec plus de fils pour commencer - sinon j'ajouter temps d'attente pour les tâches en attente dans la file d'attente. Je soupçonne également que dans de nombreux scénarios dans lesquels la file d'attente se remplit, elle pourrait se remplir rapidement, auquel cas les threads supplémentaires pourraient arriver trop tard. –
@Peter, si votre analyse statique est assez bonne pour prédire le nombre correct de threads à utiliser en charge excessive et vous êtes heureux d'avoir ces threads supplémentaires assis autour de la charge normale alors allez-y! C'est un compromis entre le temps d'amorçage d'un fil en cours de chargement ou l'utilisation de ressources supplémentaires en cas de charge faible. – Bringer128