У меня есть веб-сервис, который выполняет несколько небольших вычислений перед возвратом результата. Я хочу использовать ExecutorService
, предоставленный Executors.newFixedThreadPool()
, как способ реализации шаблона Master-Worker (то есть вызвать invokeAll
и дать потоку ждать завершения всех результатов). В идеале все потоки webservice используют одну и ту же службу-исполнитель, поэтому им не все должны создавать свой собственный пул потоков, и они могут просто поделиться одним большим пулом, который использует все время обработки системы.Может ли java fixedThreadPool использоваться несколькими потоками
Вопросы я с этим подходом:
- это безопасно для доступа к функции
invokeAll
из нескольких потоков. - будет обслуживать исполнителей просто обрабатывать запросы последовательно (т.е. сначала все задачи из потока 1, а затем для потока
- есть способ сказать 10 рабочих потоков и иметь максимальное количество потоков зависит от количество запросов на вход, так что скажем, у нас есть 1 запрос, он использует все 10 потоков для этого запроса. Если у вас есть 2 запроса, он разбивает их по 5 потоков на запрос и т. д.