[java] 람다 표현식을 사용하여 스트림을 어떻게 병렬 처리할 수 있나요?

자바 8부터 추가된 람다 표현식과 스트림 API는 코드를 더 간결하고 효율적으로 작성할 수 있는 강력한 기능을 제공합니다. 스트림은 컬렉션과 배열과 같은 데이터 요소들을 다루는데 사용되며, 람다 표현식을 이용하여 가독성 높은 코드를 작성할 수 있습니다. 이러한 특징을 통해 스트림을 병렬 처리할 수 있습니다.

1. 병렬 스트림 생성하기

스트림을 병렬 처리하려면 parallel() 메서드를 사용하여 기존의 스트림을 병렬 스트림으로 변환해야 합니다. 다음은 기존 스트림을 병렬 스트림으로 변환하는 예제입니다.

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
numbers.parallelStream().forEach(num -> System.out.println(num));

2. 병렬 스트림으로 작업 수행하기

병렬 스트림을 이용하면 내부적으로 스레드 풀을 사용하여 작업을 병렬로 처리합니다. 아래 예제는 병렬 스트림을 사용하여 각 요소를 제곱한 후 출력하는 방법을 보여줍니다.

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
numbers.parallelStream().map(num -> num * num).forEach(System.out::println);

3. 주의할 점

멀티코어 프로세서에서는 병렬 스트림을 이용하여 성능을 향상시킬 수 있지만, 작업량이 적거나 단일 스레드에서 실행하는 것이 더 효율적일 수도 있습니다. 따라서 실제 사용 시에는 성능 측정을 통해 적절히 선택해야 합니다.

스트림과 람다를 이용한 병렬 처리를 통해 자바 애플리케이션의 성능을 향상시키고 병렬 작업을 간단히 구현할 수 있습니다.

참고: Java 8 스트림 API 공식 문서