Как стать автором
Обновить

Комментарии 4

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

вызываем executorService.shutdown() для корректного завершения пула потоков

Корректное завершение пула потоков приведено, ВНЕЗАПНО!, в документации к основному интерфейсу.

Спасибо за совет!

А почему Future, а не CompletableFuture?

И ещё вопрос, если пользователь добавит 100500 фото
Executors.newFixedThreadPool(photos.size())

1) Использование CompletableFuture тоже имеет место быть. Он является более мощным и гибким инструментом и подойдет для работы со сложными асинхронными операциями, где нужно внести дополнительную логику обработки результатов и управления потоками. Однако в моем случае простая асинхронная задача загрузки фотографий, и его использование кажется избыточным. На мой взгляд, Future достаточно для этих нужд, и он проще в использовании.

2) У подобных решений на практике устанавливается ограничение на максимальное количество фотографий, которые пользователь может прикрепить. Как правило это до 10. Поэтому я подразумеваю, что в первую очередь стоит ограничение на фронте, ну и на бэке тоже стоит учесть это ограничение, чего я не сделал, так как проект тестовый.

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

Поэтому создать количество потоков по количеству фотографий Executors.newFixedThreadPool(photos.size()) будет уместно.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории