5 votes

Trop de Futures

J'ai une fonction qui prend 2 fonctions, une qui surveille un certain événement et une autre qui fait réellement le travail, chacune s'exécute dans un futur, dès que le futur événement renvoie un échec, le thread appelant signale au futur travailleur de s'arrêter. Si le thread travailleur se termine avant que l'événement ne soit reçu, le thread appelant signale alors à l'observateur de s'arrêter, puis l'appelant revient.

Cela fonctionne bien mais le problème est que la fonction worker qui fait le travail réel peut avoir besoin de vérifier d'autres événements en aval, chaque fois que je dois surveiller un certain événement, je lance 2 futures supplémentaires. La question est de savoir s'il y a une limite au nombre maximum de futures en cours d'exécution. Je peux me retrouver avec 60 futures à certains moments ? Le pool de threads augmentera-t-il en fonction des besoins ? Et comme ils fonctionnent sur un pool de threads, je suppose qu'il n'est pas trop coûteux de les créer ?

5voto

iruediger Points 893

Tout dépend de la Exécuteur testamentaire . Supposons que vous ayez créé un Executor con Exécuteurs.newFixedThreadPool(n) et lui a soumis n * 100 tâches, il n'y aura pas plus de n fils en cours d'exécution .

Si vous utilisez l'option de Clojure fonction future il soumettra vos tâches à clojure.lang.Agent.soloExecutor . L'exécuteur solo est créé avec Exécuteurs.newCachedThreadPool(threadFactory) Il réutilisera donc les threads et en exécutera autant que possible.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X