Stream API와 병렬 처리
7. 정리
- 스트림은 저장소가 아니라 파이프라인이다. 내부 반복·지연 평가·일회성이 컬렉션과의 차이다.
- 중간 연산은 설계도만 쌓고, 최종 연산이 호출될 때 요소 하나씩 전체 단계를 수직으로 통과한다. 그래서
limit/takeWhile/findFirst가 단락 평가되고 무한 스트림이 가능하다.sorted/distinct는 유상태 장벽이다. collect가 스트림의 절반이다.groupingBy(분류, 맵팩토리, downstream)중첩과toMap의 merge 함수,partitioningBy,teeing,mapping을 손에 익혀라.- 숫자는
mapToInt/Long/Double로 내려가서sum/average/summaryStatistics— 박싱을 피한다. parallelStream은 공용 ForkJoinPool 에서 분할·합치기를 하므로 대량 + CPU 바운드 + 잘 쪼개지는 소스 + 공유 상태 없음 일 때만 이득이다. I/O 병렬은 가상 스레드로.
다음 레슨 05. Optional에서는 이 레슨의 findFirst, max, reduce 가 돌려준 Optional 을 어떻게 안전하게 다루고, 어디에 쓰면 안 되는지 다룹니다.