문서의 선택한 두 판 사이의 차이를 보여줍니다.
| 양쪽 이전 판 이전 판 다음 판 | 이전 판 | ||
|
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(" | ||
| + | } | ||
| + | } | ||
| + | </ | ||