J'ai un webservice qui fait plusieurs petits calculs avant de retourner le résultat. Je veux utiliser le ExecutorService
fourni par Executors.newFixedThreadPool()
comme un moyen d'implémenter le modèle maître-ouvrier (c'est-à-dire appeler invokeAll
et laisser le thread attendre que tous les résultats soient terminés). Idéalement, tous les threads de service Web utilisent le même service d'exécution de sorte qu'ils ne doivent pas tous créer leur propre pool de threads et qu'ils peuvent simplement partager un pool important qui utilise tout le temps de traitement du système.Est-ce qu'un java fixedThreadPool peut être utilisé par plusieurs threads?
Questions que j'ai avec cette approche:
- est-il sûr d'accéder à la fonction
invokeAll
de plusieurs threads. - est-ce que le service d'exécution gère les requêtes de manière séquentielle (par exemple, toutes les tâches du thread 1, puis celles du thread
- est-il possible d'avoir 10 threads de travail et d'avoir le nombre maximum de threads disponibles? nombre de demandes arrivant, disons que nous avons 1 requête, il utilise tous les 10 threads pour cette requête Si vous avez 2 demandes, il les divise 5 threads par demande, etc.