Ce qui est optimal de la taille du pool de threads pour un simple programme en cours d'exécution du processeur en fonction des tâches en Java

Im en utilisant un pool de threads pour exécuter des tâches qui sont pour la plupart basés cpu avec un peu d'I/O,
de taille plus grande que le nombre de processeurs.

Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors() + 1)

En supposant le cas d'un simple programme qui soumet l'ensemble de ses tâches à cet exécuteur testamentaire et de fait, à peu de chose je suppose avoir un pool de threads plus importante permettrait de ralentir les choses, car l'OS aurait à timeslice elle processeurs plus souvent la chance de donner à chaque thread dans le pool de threads une chance de s'exécuter.

Est-ce exact et si oui, est-ce un réel problème ou principalement théorique, j'.e si j'ai augmenté la taille du pool de threads pour 1000 ne je remarque une énorme différence.

Il n'y a pas une telle chose comme un généralisée "optimale taille du pool de threads" ou un optimum à autre chose. Vous devez l'essayer et voir. De Test et de mesure. Pas une vraie question.
Je savais que quelqu'un allait dire, mais je pense que Ive a clairement précisé les cas d'utilisation et Im essayant d'établir une fonction de la façon dont les pools de threads de travail, les réponses données ci-dessous sont plus utiles.
Voir ces réponses précédentes stackoverflow.com/questions/4049498/...
Voir ces réponses précédentes stackoverflow.com/questions/4049498/...

OriginalL'auteur Paul Taylor | 2012-10-18