면접질문 - 병렬 스트림

잠자는 고양이·2025년 5월 22일
0

Java

목록 보기
68/73

질문 1. 병렬 스트림 (Parallel Stream)을 사용할 때 발생할 수 있는 문제점은?

  1. 공유 리소스 접근시 Race Condition 발생
  • 여러 개의 스레드가 동시에 공유 변수를 수정하면 Race Condition이 발생할 수 있음
  1. 병렬 스트림은 순서를 보장하지 않음
  2. 병렬 실행 오버헤드로 인해 성능 저하 발생
    • 작은 데이터셋을 병렬로 처리하면 오히려 ForkJoinPool 생성 비용 때문에 성능이 저하될 수 있음
  3. 병렬 처리 시 디버깅이 어려움
    • 병렬 스트림은 직업이 랜덤한 스레드에서 실행되므로 디버깅이 어려움

질문 2. ForkJoinPool은 무엇인가?

  • Java의 병렬 연산을 지원하는 프레임워크로,
    큰 작업을 작은 작업으로 나눈 후(Fork), 각 작업을 병렬로 실행하고
    최종적으로 결과를 합치는(Join) 방식으로 동작하는 스레드 풀 (Thread Pool)

  • 주로 대량의 데이터를 처리하거나 재귀적 연산에 효율적

  • RecursiveTask 또는 RecursiveAction 클래스를 활용하여 작업을 구현

질문 3. 병렬 스트림과 ExecutorService의 차이는?

둘 다 Java에서 멀티스레드를 활용한 병렬 처리 기법이지만,
용도와 동작 방식이 다름

parallelStream()
→ 데이터 컬렉션(List, Set, Map)을 병렬로 처리

ExecutorService
→ 직접 스레드 풀을 생성하여 다양한 병렬 작업을 수행

profile
개발자가 되고 싶은 잠자는고양이

0개의 댓글