BackEnd/Java&Kotilin
[Java]병렬 스트림( Parellel Stream )
Hero_O
2022. 8. 21. 22:34
병렬 스트림 ( Parellel Stream )
스트림(Stream) 요소를 특정 단위(Chunk)로 작업을 분할하여 처리 할 수 있게 하는 방법이다.
특징
- 병렬 처리는 사용 방법에 따라 성능에 악영향을 가져오기도 한다. 대표적으로 잦은 박싱•언박싱, 데이터의 순서가 중요한 경우 또는 소량에 데이터를 처리할 때는 적합하지 않다.
- 올바른 자료구조를 사용해야 한다. ( ArrayList 🅾️ LikedList ❌ )
- 요소의 순서가 중요하다면 순차 스트림이 병렬 스트림에 비해 성능이 좋을 수 있다.
- 박싱•언박싱 과정에 오버헤드가 상당하기 때문테 특화 스트림(IntStream 등)을 사용하는 것이 좋다.
- 내부적으로 ForkJoinPool 사용한다.
사용 방법
- parallelStream 을 통해 병렬 스트림으로 변경하여 작업을 진행할 수 있다.
- 특화 스트림 (LongStream, IntStream 등)을 사용하여 박싱•언박싱으로 낭비되는 비용을 막을 수 있다.