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

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

Linda Hamilton
풀어 주다: 2024-12-24 17:42:18
원래의
188명이 탐색했습니다.

How Can I Use Custom Thread Pools with Java 8 Parallel Streams?

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

병렬 스트림 내에서 스레드 리소스 할당을 제어하면 애플리케이션 성능과 모듈성이 향상됩니다. 그러나 Java 8의 특정 스트림 작업에 대해 사용자 정의 스레드 풀을 지정하는 방법은 여전히 ​​불분명합니다.

이 기사에서는 문제를 살펴보고 병렬 스트림에서 공유 스레드 풀의 한계를 극복하는 솔루션을 제공합니다.

문제 설명

병렬 스트림을 활용하는 서버 애플리케이션을 고려해보세요. 한 모듈 내의 느린 작업이 다른 모듈에 영향을 미치는 것을 방지하려면 스레드 풀 구획화가 필요합니다. 그러나 표준 병렬 스트림 구현은 모든 작업에 공유 스레드 풀을 사용합니다.

다음 코드 조각에서 예시된 것처럼 손상된 작업은 다른 스레드를 무기한 지연시킵니다.

// CPU-intensive tasks in separate threads leveraging parallel streams
ExecutorService es = Executors.newCachedThreadPool();

es.execute(() -> runTask(1000)); // Incorrect task
es.execute(() -> runTask(0));
es.execute(() -> runTask(0));
es.execute(() -> runTask(0));
es.execute(() -> runTask(0));
es.execute(() -> runTask(0));
로그인 후 복사

솔루션

지정된 포크-조인 풀 내에서 병렬 작업을 실행하려면 태스크로 사용하세요. 수영장 내. 이는 공유 풀에서 작업을 분리합니다.

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

이 기술은 ForkJoinTask.fork()의 동작을 활용합니다. "해당되는 경우 현재 작업이 실행 중인 풀에서 이 작업을 비동기적으로 실행하거나 다음을 사용하여 실행합니다. ForkJoinPool()에 없으면 ForkJoinPool.commonPool()이 필요합니다."

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

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿