문서의 선택한 두 판 사이의 차이를 보여줍니다.
양쪽 이전 판 이전 판 | |||
java:concurrent:executorservice [2018/04/25 15:25] kwon37xi [ThreadPoolExecutor] |
java:concurrent:executorservice [2020/08/07 13:53] kwon37xi |
||
---|---|---|---|
줄 69: | 줄 69: | ||
* reject : Executor가 shutdown 상태이거나, | * reject : Executor가 shutdown 상태이거나, | ||
* '' | * '' | ||
+ | |||
+ | ===== ExecutorCompletionService ===== | ||
+ | * [[https:// | ||
+ | * 여러개의 '' | ||
+ | * [[java: | ||
+ | |||
+ | <code java> | ||
+ | final ExecutorService pool = Executors.newFixedThreadPool(5); | ||
+ | |||
+ | // 응답 타입(String) 명시 필요 | ||
+ | final ExecutorCompletionService< | ||
+ | |||
+ | for (final String site : topSites) { | ||
+ | completionService.submit(new Callable< | ||
+ | @Override | ||
+ | public String call() throws Exception { | ||
+ | return IOUtils.toString(new URL(" | ||
+ | } | ||
+ | }); | ||
+ | } | ||
+ | |||
+ | // submit 한 갯수가 정확해야한다. | ||
+ | for(int i = 0; i < topSites.size(); | ||
+ | final Future< | ||
+ | try { | ||
+ | final String content = future.get(); | ||
+ | // | ||
+ | } catch (ExecutionException e) { | ||
+ | log.warn(" | ||
+ | } | ||
+ | } | ||
+ | </ |