6
votes

Combien coûte-t-il un nouveau fil en Java? Quand devrions-nous envisager d'utiliser un bassin de fil?

Je me demande où est le point de vue après lequel une piscine de fil doit être utilisée. Combien de nouveaux threads par seconde puis-je créer sans utiliser de piscine de fil évitant toujours une pénalité de performance notable?

Y a-t-il des implémentations de fil-piscine open-source observables?


0 commentaires

3 Réponses :


6
votes

Compte tenu du coût, la seule réponse valide est de le tester pour vous-même (façon non si élégante de vous dire que je n'ai jamais fait un tel test et que je ne le ferai jamais, comme le mécanisme d'exécution moderne fournit une création de loin avancée / Mécanismes de destruction).

Confidentiels existants, Versions modernes Java (commençant par Java 5) propose diverses sous-classes de ThreadpoolEcutor qui combine les avantages d'une piscine de fil avec les concepts les plus modernes de Java.Util.ConCurrent: exécuteurs.

En outre, je ne vous recommanderais jamais assez d'oublier les threads et de les repasser avec des objets de calcul exécubles, appelables et autres plus avancés. De cette façon, vous pouvez facilement changer de mise en œuvre des exécuteurs.


1 commentaires

La classe d'utilitaires statiques des exécuteurs propose simplement de créer une instance de threadpoolexecutor qui est configurée en fonction de la méthode appelée.



6
votes

Vous devez toujours utiliser un bassin de fil. Pas seulement pour la performance, mais pour la facilité d'utilisation, le paquet Java.Util.ContCurrent vous donne. Avec Java 5 et plus tard, la mise en commun de fil est intégrée.

au lieu de penser en termes de «threads», utilisez le exécuteur interface pour exécuter des tâches à effectuer. Créer une nouvelle piscine de thread est aussi simple que: P>

Executor executor = Executors.newFixedThreadPool(5);


0 commentaires

0
votes

Créer des threads est toujours cher, quelle que soit la plate-forme. Le temps réel pour la création d'un fil dépend du système d'exploitation.

Je recommanderais d'utiliser une piscine de fil si vous créez des fils de courte durée de vie. Par exemple, si la tâche principale de votre application est de conserver de telles tâches de courte durée, une piscine de thread serait très agréable.

Un bassin de fil est également agréable si vous créez trop de threads. La commutation de contexte entre les threads peut également tuer la performance. Longue histoire courte, sur l'architecture PC quadriorne contemporaine que vous devriez viser à ne pas avoir plus de 200 threads en cours d'exécution à la fois.


2 commentaires

Quelqu'un a mesuré cela lorsque vous répondez ici à une question ici: Stackoverflow.com/Questions/ 2117072 / ... Il a créé 10 000 threads par seconde, ce n'est donc pas trop cher.


Créer des threads peut être correct, comme dans Java, je pense que les threads réels ne sont créés que lorsque la méthode du thread commence. Cependant, 10 000 threads sont un tueur de performance en raison de la commutation de contexte.