как выбрать пул потоков? - PullRequest
1 голос
/ 16 июня 2020
Например,

у меня есть приложение с 3 уровнями:

HTTP Layer -> App Logic -> Db Layer 

каждый уровень использует пул потоков.

Следует ли мне использовать один пул потоков для обработки?

Или лучший способ обработки - использовать разные пулы для разных слоев. Потому что я знаю, что некоторые запросы к DB-Layer сложны и тяжелы, и я предпочитаю использовать отдельный уровень для DB logi c.

А как выбрать размер пула потоков в таких случаях? Должен ли я переключаться на подсчет процессора? Потому что, если я использую 3 пула потоков, они должны беспокоить друг друга. Или я ошибаюсь в своих предположениях?

1 Ответ

0 голосов
/ 29 июня 2020

Во-первых, знайте, что потоки не тесно связаны с каким-либо конкретным c слоем, это зависит от использования c спецификации задачи.

Вы также можете использовать только ОДИН поток для всех слоев , и вызывать методы / функции, определенные на других уровнях. Недостатком использования многих потоков является то, что это может вызвать взаимоблокировки, и справиться с ними не совсем просто. Поэтому постарайтесь свести к минимуму создание большего количества потоков. Причина создания потоков и управления ими - непростая задача под капотом. выполнять действия. В идеале Runtime.getRuntime().availableProcessors() используется для получения количества процессоров.

...