Есть лист. С каждым элементом я в отдельном потоке провожу работу. Обьектов много. Хочу раздить лись по группам (10 обьектов в группе), и каждую группу в отдельном потоке обработать.
Как я делаю сейчас:
list.parallelStream().map(key -> Some actions)
Как мне реализовать это?
Можно предварительно разбить список на части
public static <T> List<List<T>> chunkify(List<T> list, int chunkSize){
List<List<T>> chunks = new ArrayList<>();
for (int i = 0; i < list.size(); i += chunkSize) {
List<T> chunk = new ArrayList<>(list.subList(i, Math.min(list.size(), i + chunkSize)));
chunks.add(chunk);
}
return chunks;
}
chunkify(bigList, 10).parallelStream()
.map(...)
...
Можно реализовать используя библиотеку Guava :
Lists.partition(yourListName, 10)
.parallelStream()
.forEach(...);
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости