JAVA Parallel Stream

김국민·2025년 1월 22일

JAVA

목록 보기
6/21

스트림이란?

자바 8에 도입된 기능으로 데이터를 함수형으로 다루기 위한 추상화된 데이터 처리 방식
사전적의미와도 비슷하다
스트림이란 간단히 말해서 데이터의 흐름이다
어떤 데이터를 우리가 원하는 데이터로 만들기위한 흐름 정도로 생각하면 될거같다

우리가 원하는 결과를 얻기 위해 중간에 filter, map 연산을하고 결과적으로 collect 연산을 해서 우리가 원하는 결과를 얻게 된다


스트림의 특징

  1. 함수형 스타일: for문 대신 함수형 메서드를 연쇄적으로 적용하여 가독성을 높임.
  2. 데이터 변경 없음: 스트림은 원본 데이터를 변경하지 않는다(불변성).
  3. 지연 연산(Lazy Evaluation): 중간 연산은 결과를 바로 내지 않고, 최종 연산이 실행될 때 한 번에 처리.
  4. 병렬 처리(Parallel Stream): 스트림을 병렬로 처리하여 멀티코어 환경에서 성능을 높일 수 있다.

스트림 병렬처리

스트림을 사용할 때 장점중 하나는 병렬처리가 쉽다는 것이다.
내부적으로 fork & join 프레임워크로 자동으로 연산을 병렬로 처리한다.
병렬 스트림은 내부적으로 ForkJoinPool을 사용하는데, ForkJoinPool은 프로세서 수(Runtion.getRuntime().availableProcessors())의 스레드를 가진다.

사용예시

병렬처리로 순서가 일정하지 않다

동작방식

병렬화할 수 있는 작업을 재귀적으로 서브 데이터로 분할한 다음 각각의 결과를 합쳐 전체 결과를 만들도록 설계되었다.

작업을 분할하고 수행한 후 합친다. (분할정복 알고리즘)

병렬처리의 결과


profile
개발지망생

0개의 댓글