문서의 선택한 두 판 사이의 차이를 보여줍니다.
양쪽 이전 판 이전 판 다음 판 | 이전 판 | ||
java:concurrent:executorservice [2018/03/06 16:46] kwon37xi [ThreadPoolExecutor] |
java:concurrent:executorservice [2020/08/07 13:53] (현재) kwon37xi |
||
---|---|---|---|
줄 58: | 줄 58: | ||
* 대표적인 Thread Pool? | * 대표적인 Thread Pool? | ||
* [[https:// | * [[https:// | ||
- | * Spring의 | + | * [[springframework:async|Spring @Async]]가 사용한다. |
* '' | * '' | ||
* '' | * '' | ||
줄 68: | 줄 68: | ||
* 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(" | ||
+ | } | ||
+ | } | ||
+ | </ |