Многопоточность полезна до какой степени? - PullRequest
0 голосов
/ 24 августа 2011
  • У меня есть задача, которую я могу разделить на несколько независимых подзадач, и каждая подзадача может быть запущена в отдельном потоке в Java.
  • Я хочу понять, каково оптимальное количество потоков, после чего увеличение количества потоков не приведет к увеличению производительности.

Ответы [ 2 ]

5 голосов
/ 24 августа 2011

Здесь есть ряд факторов.Количество процессоров / ядер ограничено только в том случае, если ваши задачи связаны с процессором.Если ваши задачи, как правило, связаны с вводом-выводом, вы, скорее всего, выиграете от большего количества потоков, чем от процессоров / ядер.Сколько зависит от того, сколько времени ваши задачи тратят на ожидание ввода-вывода, и сколько времени они тратят на выполнение реальных вычислений.

Так что, как обычно, это зависит от того, что вы делаете.

Для процессов, связанных с процессором, количество запущенных потоков не должно превышать количество ядер.

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

0 голосов
/ 24 августа 2011

Проверьте это сообщение Брайана Гетца, довольно старое, но информативное

...