J'ai un programme qui génère des threads (~ 5-150) qui effectuent un tas de tâches. À l'origine, j'ai utilisé un FixedThreadPool
parce que cette question similaire suggérait qu'ils étaient mieux adaptés pour des tâches plus longues et avec ma connaissance très limitée du multithreading, j'ai considéré la durée de vie moyenne des threads (plusieurs minutes) " longue durée ".
Cependant, j'ai récemment ajouté la possibilité de générer des threads supplémentaires et cela me fait dépasser la limite de thread que j'ai définie. Dans ce cas, serait-il préférable de deviner et d'augmenter le nombre de threads que je peux autoriser ou de passer à un CachedThreadPool
pour ne pas gaspiller de threads?
En les essayant tous les deux au préalable, il ne semble pas y avoir de différence, donc je suis enclin à aller avec le CachedThreadPool
juste pour éviter le gaspillage. Cependant, la durée de vie des threads signifie-t-elle que je devrais plutôt choisir un FixedThreadPool
et traiter uniquement les threads inutilisés? Cette question donne l'impression que ces fils supplémentaires ne sont pas gaspillés, mais j'apprécierais la clarification.