[java] 스트림을 이용한 병렬 매핑 방법

스트림은 자바 8부터 추가된 기능으로, 컬렉션 요소들을 처리하기 위한 연속적인 연산을 지원합니다. 스트림을 병렬로 처리할 경우, 멀티코어 환경에서 빠른 처리를 할 수 있습니다. 이번 포스트에서는 스트림을 이용하여 병렬 매핑을 하는 방법에 대해 알아보겠습니다.

1. Stream의 parallel() 메서드

스트림을 병렬로 처리하기 위해서는 parallel() 메서드를 호출하면 됩니다. 이 메서드를 호출하면 스트림의 연산이 병렬로 처리되도록 설정됩니다.

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);

List<Integer> mappedNumbers = numbers.stream()
                                     .parallel()
                                     .map(n -> n * 2)
                                     .collect(Collectors.toList());

위의 예제에서 parallel() 메서드를 호출하여 스트림을 병렬 처리로 설정하고, map() 메서드를 사용하여 각 요소를 곱하기 2한 결과를 얻습니다.

2. Stream의 parallelStream() 메서드

스트림 객체가 아닌 컬렉션 객체에서 바로 병렬 스트림을 생성하고 싶을 때는 parallelStream() 메서드를 사용할 수 있습니다.

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);

List<Integer> mappedNumbers = numbers.parallelStream()
                                     .map(n -> n * 2)
                                     .collect(Collectors.toList());

위의 예제에서는 parallelStream() 메서드를 호출하여 컬렉션에서 바로 병렬 스트림을 생성하고, map() 메서드를 사용하여 각 요소를 곱하기 2한 결과를 얻습니다.

3. 주의사항

스트림을 병렬로 처리할 때는 몇 가지 주의사항이 있습니다.

참고 자료