Общий executorservice (фиксированный пул потоков) для полного веб-приложения или новый пул потоков, использующий executorService для каждого запроса? - PullRequest
0 голосов
/ 05 сентября 2018

Чтобы улучшить время ответа на мой запрос, я планировал использовать executorService и разделить свою работу между несколькими потоками и сократить время ответа на запрос.

Но после прочтения статей и блогов создание нового пула потоков для каждого запроса также повлияет на производительность.

Каким будет праздный подход, - 1. Должен ли я создавать новый пул потоков для каждого запроса? ИЛИ ЖЕ 2. Должен ли я сохранить фиксированный пул потоков для всего приложения и позволить каждому запросу использовать потоки из этого одного пула потоков?

1 Ответ

0 голосов
/ 05 сентября 2018

Итак, какой смысл создавать пул потоков? Обычно это либо одна, либо обе из двух причин:

A) Ваше приложение может повторно использовать потоки вместо того, чтобы тратить много времени на процессор, уничтожая старые потоки и создавая новые для их замены.

B) Это позволяет вашему приложению контролировать количество потоков, которые оно создает. Вместо того, чтобы создавать какое-то неограниченное количество ресурсоемких потоков при большом наборе задач (например, клиентских запросов), ваше приложение может вместо этого создавать объекты задач в удобной компактной очереди, а затем оно может использовать некоторое разумное число * из потоки для их обработки

Создание потока пулы означает создание и удаление потоков, которыми управляют эти пулы. Итак, если вы создали и уничтожили новый пул потоков для каждого клиентского запроса, вы полностью победили бы обе причины (A) и (B).


* Предпочтительно, определяется количеством процессоров, объемом памяти и т. Д., Которые доступны на хосте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...