Viamos
@Viamos
Человек, который любит пиццу

Ка лучше использовать parallelStream() в Java?

Хотел бы получить информацию о параллельных стримах. Если смотреть прям под мой кейс, то у меня есть списки в котором хранятся объекты с BigDecimal
Приведу один из примеров
private static BigDecimal findAvg(List<Record> records) {
        return BigDecimal.valueOf(records.stream()
                .map(Record::getWithdrawal)
                .reduce(BigDecimal.ZERO, BigDecimal::add)
                .doubleValue() / records.size());
    }

Или приведу пример с parallelStream()
var records = dayRecords.parallelStream()
                    .filter(r -> r.getDescription().equals(description))
                    .collect(Collectors.toList());

В этом случае бывает программа не может остановиться. Пока не разобрался почему. Цель этого кейса, это приток производительности и потребление памяти с малом количестве.

В общем какие Best Practice есть с parallelStream() и с чем его едят? Какие лучше Collections выбирать для них?
  • Вопрос задан
  • 109 просмотров
Решения вопроса 2
xez
@xez Куратор тега Java
TL Junior Roo
Бест-практиз - не использовать паралелСтрим:
https://dzone.com/articles/think-twice-using-java-8

Можно использовать StreamEx.
Ответ написан
Комментировать
mayton2019
@mayton2019 Куратор тега Java
Bigdata Engineer
Не все коллекции поддерживают параллелизм стримов.

Какие BestPractices? Запускай анализ производительности под JMH и наблюдай. Не верь в рекламу.

Пример с подсчетом среднего значения в List (кстати какой это List? Какая implementation?) - очень софистичесчкий
и надуманный. Его любят преподаватели. Но в реальной жизни и в продуктовом коде тебе чаще придется вычислять среднее по ResultSet из JDBC или по какому-нибудь толстому JSON документу который льется из микросервиса.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Bell Integrator Ульяновск
До 400 000 ₽
Bell Integrator Ижевск
До 400 000 ₽
Bell Integrator Хабаровск
До 400 000 ₽
28 мар. 2024, в 20:46
150000 руб./за проект
28 мар. 2024, в 20:37
50000 руб./за проект
28 мар. 2024, в 20:34
1500 руб./за проект