Риски связаны с неверной семантикой: Optional.get без проверки, побочные эффекты и повторное использование Stream, гонки и блокирующий I/O в parallelStream. Эти инструменты не заменяют понимание выполнения.
Какие риски есть при использовании Optional, Stream API и parallelStream?
Риски связаны с неверной семантикой: Optional.get без проверки, побочные эффекты и повторное использование Stream, гонки и блокирующий I/O в parallelStream. Эти инструменты не заменяют понимание выполнения.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Риски связаны с неверной семантикой: Optional.get без проверки, побочные эффекты и повторное использование Stream, гонки и блокирующий I/O в parallelStream. Эти инструменты не заменяют понимание выполнения.
У Optional метод orElse вычисляет аргумент заранее, а orElseGet — по необходимости. Stream ленив до terminal operation и обычно одноразовый; изменение источника во время обхода опасно. Для parallelStream нужны ассоциативные операции и безопасная работа с состоянием. Параллельность может стоить дороже последовательного цикла на маленьких данных, поэтому производительность проверяют измерениями.