나는 자바에서 List<List<String>>
을 가지고있다. 부모 목록 내부에서리스트를 비동기 적으로 처리하고 싶다. 고정 스레드 풀 예제 3. CompletableFuture와 Stream을 java 8에서 사용하려고한다.이 두 메소드를 병합하는 방법과 이해하는 방법을 모르고있다. . PFB 코드 나는 지금까지 노력했다. 프로세서에서는 인쇄 중이지만 DB 작업을 수행합니다.java에서 CompletableFuture로 List 목록을 처리하는 방법은 무엇입니까?
그래서 여기 List<List<String>>
스트림을 시도하고 목록 크기를 기반으로 스레드 수를 만듭니다. 그러나 괭이는 Streamed List를 CompletableFuture가있는 Processor에 인수로 전달합니다.
public class CompletableFutureWithList {
public static void main(String args[]) {
List<List<String>> aList = new ArrayList<>();
aList.add(new ArrayList<>(Arrays.asList("xyz", "abc")));
aList.add(new ArrayList<>(Arrays.asList("qwe", "poi")));
System.out.println("helo...");
ExecutorService executor = Executors.newFixedThreadPool(aList.size());
//aList.stream().flatMap(List::stream).
Processor aProcessor = new Processor();
List<String> tempList = new ArrayList<>();
CompletableFuture aComFuture = supplyAsync(() -> aProcessor.processList(tempList), executor);
try {
aComFuture.get();
} catch (InterruptedException | ExecutionException e) {
e.printStackTrace();
}
}
}
public class Processor {
public boolean processList(List<String> tempList) {
for (String string : tempList) {
System.out.println("Output: " + string);
}
return true;
}
}
왜 당신이 CompletableFuture을 사용하고 단순히 호출하지 '미래 F = excecutor.submit (() -> PROCESSLIST (목록))'각 목록을 검색 하시나요? –
assylias
하나의 스레드 (디버깅하기 쉽다)를 가진 간단한 프로그램을 작성하고이 프로그램을 실행하여 외부 프로세스 인 Apache Commons Exec을 실행할 수있다. – Grzesiek