[java] 함수형 인터페이스를 사용하여 순차적으로 수행되는 작업을 병렬로 처리하는 방법은 어떻게 되나요?

함수형 인터페이스는 하나의 추상 메소드만을 갖는 인터페이스를 말합니다. 자바 8부터는 java.util.function 패키지에 다양한 함수형 인터페이스들이 추가되었습니다. 그 중에서도 Consumer, Function, Predicate 등을 이용하여 작업을 정의하고, parallelStream() 메소드를 이용하여 병렬 처리를 수행할 수 있습니다.

아래는 예제 코드입니다.

import java.util.Arrays;

public class ParallelProcessingExample {

    public static void main(String[] args) {
        String[] words = {"apple", "banana", "cherry", "date", "elderberry"};

        // 단어의 길이를 출력하는 작업을 정의
        Consumer<String> printLength = word -> System.out.println(word + "의 길이: " + word.length());

        // 순차적으로 작업 수행
        Arrays.stream(words).forEach(printLength);

        System.out.println();

        // 병렬로 작업 수행
        Arrays.stream(words)
                .parallel()
                .forEach(printLength);
    }
}

위 코드에서 forEach 메소드를 호출할 때 parallel() 메소드를 함께 호출함으로써 병렬 처리를 수행할 수 있습니다. 병렬 처리를 수행하면 각각의 작업은 독립적으로 실행되기 때문에 전체 작업이 더 빠르게 완료될 수 있습니다.

하지만 병렬 처리는 모든 상황에서 성능 향상을 보장하지는 않습니다. 작업의 종류와 크기, 데이터의 종류와 크기에 따라서 성능 차이가 발생할 수 있으므로, 실제 적용 전에 충분한 테스트와 평가를 수행하는 것이 중요합니다.

참고 문서: