[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()
메소드를 함께 호출함으로써 병렬 처리를 수행할 수 있습니다. 병렬 처리를 수행하면 각각의 작업은 독립적으로 실행되기 때문에 전체 작업이 더 빠르게 완료될 수 있습니다.
하지만 병렬 처리는 모든 상황에서 성능 향상을 보장하지는 않습니다. 작업의 종류와 크기, 데이터의 종류와 크기에 따라서 성능 차이가 발생할 수 있으므로, 실제 적용 전에 충분한 테스트와 평가를 수행하는 것이 중요합니다.
참고 문서: