Plus grand threadpool ou ExecutorService supplémentaire lorsque le nouveau type de fil fonctionnera?
-
26-09-2019 - |
Question
J'ai une question qui est liée aux frais généraux possible de ExecutorService
s en Java.
La présente mise en œuvre a ExecutorService A
d'une capacité de 5 fils.
- Il fonctionne fils de type
A
. - fils de type
A
faire de la lecture de la base de données et l'écriture.
Maintenant, un fil de type B
courra après certains fils de type A
a terminé.
- Le nombre de types de fils
B
qui courront est différent de temps en temps. - fils de type
B
font un système de fichiers IO (non base de données).
Alors dois-je
- ajouter un nouveau fils
ExecutorService
B
type de poignée - ou devrais-je augmenter la capacité des fils de
ExecutorService A
et le type d'exécutionB
avec celui-là aussi?
Je pense qu'il pourrait y avoir une surcharge supplémentaire pour Java d'avoir deux ExecutorService
s, mais d'autre part le nombre total de threads augmentera de toute façon. Est-il important du tout?
La solution
Je recommanderai deux ExecutorServices
, vous pouvez profiter des différentes ExecutorService
s fournies par le paquet java.util.concurrent
.
Il rend le code plus facile et la surcharge est ignorable.
- un
ExecutorService
avec un jeu de pool de threads fixé à cinq fils. -
ExecutorService
b avec un pool de threads en cache.
Autres conseils
Si vous parlez de 5 fils de discussion, et vous n'êtes pas épuiser votre capacité de pool de threads, je tendance à dire que les frais généraux woulld soit insignifiante soit, et vous devriez juste aller tout ce que vous jugez être la voie la plus simple .