<aside> 💡 ***이 장의 내용
병렬 스트림으로 데이터를 병렬 처리하기
병렬 스트림의 성능 분석
포크/조인 프레임워크
Spliterator
로 스트림 데이터 쪼개기***
</aside>
지금까지 새로운 스트림 인터페이스를 이용해서 데이터 컬렉션을 선언형으로 제어하는 방법을 알아봤다!
컬렉션에
parallelStream
을 호출하면 병렬 스트림이 생성된다.
병렬 스트림 : 각각의 스레드에서 처리할 수 있도록 스트림 요소를 여러 청크로 분할한 스트림
숫자 n
을 인수로 받아서 1
부터 n
까지의 모든 숫자의 합계를 반환
public long **sequentialSum**(long n) {
return Stream.iterate(1L, i -> i + 1)
.limit(n)
.reduce(0L, Long::sum);
}
public long **iterativeSum**(long n) {
long result = 0;
for (long i = 1L; i <= n; i++) {
result += i;
}
return result;
}
n
이 커진다면 이 연산을 병렬로 처리하는 것이 좋을 것이다.