Является ли пул потоков лучшим решением для многопоточного парсера?

139
09 июня 2019, 00:10

Контекст: Я так понимаю, что пул (ExecutorService) используется только когда нужно создать большое число потоков (по модели: поток родился, выполнил работу, умер) и тогда пул является ограничителем одновременно действующих, чтобы они всей своей массой не завалили нагрузкой доступные ресурсы машины (защита от чрезмерных потерь от переключения контекста). А вот, если я сразу создаю только ограниченное количество потоков (по числу ядер на машине) и потом "в ручную" отслеживаю их количество (если кто-то отвалился то вместо него генерирую новый), то в этом случае пул потоков и не требуется

Преамбула Стоит задача парсить (40-100 тыс.) web-ссылок. Не знаю, как лучше поступить

Через пул код кажется проще(чище). Не нужно заводить счетчик работающих потоков, отслеживать не отвалился ли кто. Просто, в взять из коллекции ссылку, запустить парсер... и так в цикле 10ки тысяч раз. Пул сам потом отследит, чтобы одновременно работало не более указанного числа потоков.

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

Вопрос Правильно ли я понимаю, что, если, чем проще код, тем надежнее/лучше/прибыльнее/красивее и т.п., то пул - это лучший выбор "ленивого-clean-кодера", или я что-то не учел с ним связанное?

READ ALSO
Ошибка при работе с MutableLiveData: non-static method getInstance() cannot be referenced from a static context

Ошибка при работе с MutableLiveData: non-static method getInstance() cannot be referenced from a static context

Я пытаюсь создать некий Repository для хранения данных между событиями жизненного цикла Android приложенияСледую архитектуре паттерна MVVM, также...

126
Немного о чистом коде

Немного о чистом коде

Приветсвую, есть у меня в коде класс ConfirmDialog, цель которого при нажатии кнопки Продолжить, выполнить действие, а при нажатии отмена, убрать...

118
Анимация планет солнечной системы

Анимация планет солнечной системы

У меня есть картинка планет солнечной системы

161
Как исправить ошибку: Failed to execute 'appendChild' on 'Node'

Как исправить ошибку: Failed to execute 'appendChild' on 'Node'

При выполнении appendChild появляется следующая ошибка

144