저는 ExecutorService를 처음 사용 합니다만, 이에 대한 접근 방법은 확실하지 않습니다. 알려진 작업에 대해 최대 100 개의 스레드를 처리 할 수 있습니다. 아래의 일반 형식을 사용하여 List of FutureTasks를 만든 다음 ExecutorService에 제출합니다. ExecutorService는 보류중인 결과를 반환하고 다른 목록에 추가합니다. 그런 다음이 목록을 반복하면서 각 보류 결과에 대해 get()을 호출합니다.Executor 서비스에서 여러 결과를 효율적으로 처리하는 방법
내 쿼리 : 100 개의 스레드가 모두 완료 될 때까지 각 get()에서이 블록을 차례로 수행하지 않겠습니까? 이 작업을 수행하는 더 좋은 방법이 있습니까?
그리고 get()이 Callable 구현의 call() 메소드의 결과를 반환한다고 가정하는 것이 맞습니까? 나는 기본 FutureTask 클래스를 사용하고 있으며 그것을 서브 클래 싱하지 않았다.
ExecutorService exec = Executors.newFixedThreadPool(NUM_THREADS);
List<JobClass> originalList = new ArrayList<JobClass>();
List<SomeOtherClass> pendingResult = new ArrayList<SomeOtherClass>();
List<Future<SomeOtherClass>> resultList = new ArrayList<Future<SomeOtherClass>>();
for(JobClass sc : originalList)
pendingResult.add(submit(sc);
for(Future<SomeOtherClass> future : futures)
resultList.add(future.get(5, TimeUnit.SECONDS));
샘플 코드가 필요한 경우 알려주십시오. –
감사합니다. doc_180, 팁과이 기사 [link] (http://blog.teamlazerbeez.com/2009/04/29/java-completionservice/) 사이에서 문제가 해결되었습니다. –