>Java >java지도 시간 >Java 8 병렬 스트림이 사용자 정의 스레드 풀을 활용할 수 있습니까?

Java 8 병렬 스트림이 사용자 정의 스레드 풀을 활용할 수 있습니까?

Susan Sarandon
Susan Sarandon원래의
2024-12-28 14:11:28971검색

Can Java 8 Parallel Streams Utilize a Custom Thread Pool?

Java 8 병렬 스트림용 사용자 정의 스레드 풀

Java 8의 병렬 스트림은 작업을 병렬화하고 성능을 향상시키는 편리한 방법을 제공합니다. 그러나 특정 시나리오에서는 사용자 정의 스레드 풀을 사용하여 스레드 할당을 제어하고 애플리케이션 내의 다양한 작업을 분류하는 것이 바람직할 수 있습니다.

병렬 스트림에서 사용자 정의 스레드 풀을 사용할 수 있습니까?

처음에는 사용자 정의 스레드 풀을 병렬 스트림에 할당하는 명시적인 방법이 없었습니다. 이는 여러 모듈이 있는 애플리케이션을 처리하고 느린 작업이 다른 모듈을 차단하는 것을 방지해야 할 때 문제가 될 수 있습니다.

Fork-Join Pool 트릭

그러나 Fork-Join Pool API를 사용한 해결 방법입니다. 별도의 포크 조인 풀 내에서 병렬 작업을 제출함으로써 스트림 작업에 사용되는 공통 풀에서 이를 격리할 수 있습니다. 예는 다음과 같습니다.

final int parallelism = 4;
ForkJoinPool forkJoinPool = null;
try {
    forkJoinPool = new ForkJoinPool(parallelism);
    final List<Integer> primes = forkJoinPool.submit(() -> {
        // Parallel task here, for example
        IntStream.range(1, 1_000_000).parallel()
                .filter(PrimesPrint::isPrime)
                .boxed().collect(Collectors.toList())
    }).get();
    System.out.println(primes);
} catch (InterruptedException | ExecutionException e) {
    throw new RuntimeException(e);
} finally {
    if (forkJoinPool != null) {
        forkJoinPool.shutdown();
    }
}

이 코드는 지정된 병렬 처리를 사용하여 전용 포크-조인 풀을 생성하고 여기에 병렬 작업 실행을 제출합니다. 이를 통해 지정된 작업이 자체 스레드 풀 내에서 작동하여 공통 풀과 분리될 수 있습니다.

결론

포크 조인 풀을 사용하는 해결 방법은 다음과 같은 수단을 제공합니다. Java 8에서 병렬 스트림을 위한 사용자 정의 스레드 풀을 사용합니다. 스레드 할당 및 구획화를 보다 세밀하게 제어할 수 있어 모듈 간 작업 없이 병렬 작업을 실행할 수 있습니다. 차단합니다.

위 내용은 Java 8 병렬 스트림이 사용자 정의 스레드 풀을 활용할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.