Должен ли я ограничить количество исполнителей у меня есть? - PullRequest
1 голос
/ 05 ноября 2010

У меня есть проект Java, где мне нужно запускать вещи параллельно. Я делаю это с исполнителями. Дело в том, что мне нужно использовать исполнителей во многих местах. Должен ли я отдать предпочтение нескольким исполнителям для выполнения работы (на минуту забыть об ограничении общего числа потоков) или лучше создавать исполнителей там, где они мне нужны?

Ответы [ 2 ]

3 голосов
/ 05 ноября 2010

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

Количество потоков, создаваемых вами для каждого исполнителя, будет зависеть от частоты поступления и ожидаемой продолжительности (времени обработки) каждой представляемой задачи.Наличие очереди для каждого типа логической задачи позволяет вам настроить исполнителя только для этой задачи, чтобы у вас не было большего количества потоков, чем требовалось, и вы всегда могли не отставать от ожидаемой пропускной способности задачи.

Если у вас есть один монолитный исполнитель, совместно используемый на всех этапах обработки в вашем приложении, его настройка становится намного сложнее.

SEDA - это типичный шаблон параллелизма, который отражает этот принцип очереди на этап обработки.

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

0 голосов
/ 05 ноября 2010

Нет строгого правила, которое сообщит вам, сколько исполнителей следует использовать.Одно можно рекомендовать.Используйте некоторый механизм или структуру внедрения зависимостей для внедрения реализаций исполнителя.Это позволит быстро и легко заменить и настроить подержанных исполнителей.

...