어제 오늘 내일

[Java 기초] Arrays.parallelSort()로 병렬 정렬하기 본문

IT/Java

[Java 기초] Arrays.parallelSort()로 병렬 정렬하기

hi.anna 2025. 9. 1. 01:14

자바에서 배열 정렬하면 보통 Arrays.sort()를 많이 씁니다.
그런데 대용량 배열을 정렬할 때는 시간이 오래 걸릴 수 있죠.
이럴 때 더 빠른 성능을 낼 수 있는 방법이 바로 Arrays.parallelSort() 입니다.
이 메서드는 Java 8에서 추가된 기능으로, 멀티코어 CPU를 활용해 배열을 병렬로 정렬할 수 있습니다.

 

1. Arrays.parallelSort()란?

  • 내부적으로 Fork/Join 프레임워크를 활용하여 배열을 여러 조각으로 나눠 병렬 정렬
  • 정렬된 조각들을 다시 합쳐 최종 결과를 만듭니다
  • 멀티코어 환경에서 성능 이점이 있으며, 배열 크기가 클수록 효과가 큽니다

👉 메서드 시그니처:

public static void parallelSort(int[] a)
public static void parallelSort(Object[] a)
public static void parallelSort(int[] a, int fromIndex, int toIndex)

 

2. 기본 사용 예제

import java.util.Arrays;

public class ParallelSortExample1 {
    public static void main(String[] args) {
        int[] arr = {9, 3, 7, 1, 5, 2};

        Arrays.parallelSort(arr);

        System.out.println(Arrays.toString(arr));
    }
}

실행 결과

[1, 2, 3, 5, 7, 9]

👉 일반적인 Arrays.sort()와 동일하게 정렬된 결과를 얻을 수 있습니다.

 

3. 특정 구간만 정렬하기

부분적으로만 정렬도 가능합니다.

import java.util.Arrays;

public class ParallelSortExample2 {
    public static void main(String[] args) {
        int[] arr = {9, 3, 7, 1, 5, 2};

        // 인덱스 1부터 4까지 정렬 (3,7,1 만 정렬됨)
        Arrays.parallelSort(arr, 1, 4);

        System.out.println(Arrays.toString(arr));
    }
}

실행 결과

[9, 1, 3, 7, 5, 2]

👉 배열 전체가 아니라 원하는 범위만 정렬할 수 있습니다.

 

4. 문자열 배열 정렬

객체 배열에도 그대로 적용됩니다.

import java.util.Arrays;

public class ParallelSortExample3 {
    public static void main(String[] args) {
        String[] names = {"Tom", "Alice", "Bob", "David"};

        Arrays.parallelSort(names);

        System.out.println(Arrays.toString(names));
    }
}

실행 결과

[Alice, Bob, David, Tom]

 

5. parallelSort vs sort 성능 비교

  • 작은 배열 (예: 1,000개 이하) → 오히려 Arrays.sort()가 더 빠를 수 있음
  • 큰 배열 (예: 수십만 개 이상)Arrays.parallelSort()가 멀티코어를 활용해 성능 우위

즉, 데이터 크기에 따라 적절히 선택하는 것이 중요합니다.

 

6. 정리

  • Arrays.parallelSort() → 배열을 병렬 정렬하는 메서드
  • 내부적으로 Fork/Join을 활용하여 성능 최적화
  • 소규모 배열은 일반 sort()가 더 효율적일 수도 있음
  • 대규모 배열에서 성능 향상을 기대할 수 있음

👉 배열이 크다면 Arrays.parallelSort()로 멀티코어 성능을 활용하자!

 

 

반응형
Comments