Java의 CompletableFuture는 비동기 프로그래밍과 일부 고급 스트림 작업을 구현할 수 있는 강력한 클래스입니다. 중요한 애플리케이션 중 하나는 병렬 스트림 작업입니다.
병렬 스트리밍은 컬렉션을 여러 부분으로 나누고 이를 서로 다른 스레드에서 처리한 다음 최종적으로 결과를 병합하는 것입니다.
Java 8 이전에는 Java의 스트림을 직렬로만 처리할 수 있었지만 Java 8에서는 프로그램의 동시성 성능을 향상시키기 위해 병렬 스트림 작업이 추가되었습니다.
먼저 예제를 살펴보겠습니다.
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); list.parallelStream().forEach(System.out::println);
위 예제에서는 병렬 스트림을 얻기 위해 ParallelStream 메서드를 사용했습니다. parallelStream 메서드는 병렬 스트림을 반환합니다. 컬렉션의 경우 병렬 스트림은 컬렉션을 여러 부분으로 나눌 수 있으며, 각 부분은 다른 스레드에서 처리된 다음 결과가 병합됩니다.
동시에 CompletableFuture를 사용하여 병렬 스트림 작업을 수행할 수도 있습니다. 예는 다음과 같습니다.
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); CompletableFuture<Void> future = CompletableFuture.runAsync(() -> { list.parallelStream().forEach(System.out::println); }); future.join();
위 예에서는 CompletableFuture의 runAsync 메서드를 사용하여 비동기 작업을 생성합니다. 작업에서 병렬 스트림을 사용하여 처리할 병렬 스트림을 얻고 마지막으로 Join 메서드를 사용하여 작업을 수행합니다. 작업이 완료될 때까지 기다립니다.
runAsync 메서드를 사용하는 것 외에도 SupplyAsync 메서드를 사용하여 비동기 작업을 생성하고 결과를 반환할 수도 있습니다. 예제는 다음과 같습니다.
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); CompletableFuture<List<Integer>> future = CompletableFuture.supplyAsync(() -> { return list.parallelStream().map(i -> i * 2).collect(Collectors.toList()); }); List<Integer> result = future.join(); System.out.println(result);
위 예제에서는 CompletableFuture의 SupplyAsync 메서드를 사용하여 생성합니다. 비동기 작업을 수행하고 List
요약하자면 Java의 CompletableFuture는 비동기 프로그래밍을 구현할 수 있을 뿐만 아니라 병렬 스트림 작업도 수행할 수 있는 매우 강력한 클래스입니다. CompletableFuture를 사용할 때 스레드 안전 문제에 주의를 기울이고 병렬 스트림 작업을 합리적으로 사용하여 프로그램 동시성 성능을 향상시켜야 합니다.
위 내용은 Java에서 CompletableFuture의 병렬 스트림 작업을 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!