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 중국어 웹사이트의 기타 관련 기사를 참조하세요!