동시성과 병렬성
동시성 (Concurrency)
- 여러 작업이 중복되는 시간 동안 한정된 리소스를 경쟁하며 실행되는 것을 의미한다.
- 즉, 단일 CPU 코어에서 작업을 스케줄링하고 전환하면서 실행되는 방식이다.
병렬성 (Parallelism)
- 중첩된 작업을 관리하는 것이 아니라 각 작업을 동시에 실행하는 것에 집중한다.
- 즉, 멀티 코어 환경에서 여러 작업이 실제로 동시에 수행된다.
스트림에서의 병렬 처리
병렬 스트림 (Parallel Stream)
병렬 스트림은 재귀적 분해(Recursive Splitting) 개념을 사용합니다.
이는 Spliterator를 활용해 데이터를 작은 덩어리로 나누고, 이를 병렬로 처리하는 방식입니다.
처리 과정
- Spliterator를 사용하여 요소를 분할
- 각각의 덩어리를 전용 스레드에서 병렬 처리
- 필요할 경우 재귀적으로 더 분할
- 리소스가 적절히 분배될 때까지 반복
특징
- 자동 병렬 처리:
ExecutorService를 명시적으로 사용할 필요 없음