Сколько потоков должно существовать в приложении Java? - PullRequest
0 голосов
/ 23 ноября 2018

Как я знаю, есть правило:

N_threads = N_cores / (1 - blocking_factor)

Итак, с одной стороны, если у меня задачи с интенсивным использованием ЦП, у меня должно быть не более N_cores потоков, а нас другой стороны, если у меня есть задачи с интенсивным вводом-выводом, у меня может быть столько потоков, сколько позволит коэффициент блокировки.

Вопрос:
Если, например, я создаю два пула для интенсивных задач процессора, с«N_cores» темы в каждом, чем это нарушит это правило?Применимо ли это правило к конкретному пулу потоков (и мне разрешено иметь столько потоков, сколько я считаю нужным), либо к общему пулу JVM (и я должен применить это правило к потокам, которые принадлежат всему моему процессу Java)?

1 Ответ

0 голосов
/ 28 ноября 2018

Таким образом, формула хорошо подходит для задач, интенсивно использующих процессор, поэтому, если блокировок нет вообще, вы можете легко рассчитать размер пула по количеству ядер.Если обработка включает в себя изменение времени блокировки для ваших задач, вам может потребоваться больше гибкости, чтобы обеспечить отзывчивость вашего приложения.ForkJoinPool.ManagedBlocker можно использовать в тех случаях, когда для обеспечения достаточного параллелизма могут потребоваться дополнительные потоки.

ознакомьтесь с этим курсом и узнайте, как он используется: https://www.youtube.com/watch?v=5M55Ab6LG7A

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