문서의 선택한 두 판 사이의 차이를 보여줍니다.
양쪽 이전 판 이전 판 다음 판 | 이전 판 마지막 판 양쪽 다음 판 | ||
java:concurrent:executorservice [2016/07/16 15:29] kwon37xi [Java ExecutorService] |
java:concurrent:executorservice [2018/04/25 15:25] kwon37xi [ThreadPoolExecutor] |
||
---|---|---|---|
줄 2: | 줄 2: | ||
* [[https:// | * [[https:// | ||
* [[https:// | * [[https:// | ||
+ | * [[http:// | ||
* [[http:// | * [[http:// | ||
* [[https:// | * [[https:// | ||
+ | * [[http:// | ||
===== 최적의 쓰레드 풀 수 ===== | ===== 최적의 쓰레드 풀 수 ===== | ||
줄 13: | 줄 15: | ||
* '' | * '' | ||
* '' | * '' | ||
- | | + | |
===== Basic ExecutorService shutdown Pattern ===== | ===== Basic ExecutorService shutdown Pattern ===== | ||
줄 53: | 줄 55: | ||
* 웹 애플리케이션 등에서 모든 요청마다 '' | * 웹 애플리케이션 등에서 모든 요청마다 '' | ||
+ | ===== ThreadPoolExecutor ===== | ||
+ | * 대표적인 Thread Pool? | ||
+ | * [[https:// | ||
+ | * [[springframework: | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * 여기서 매우 중요한 점은 Pool을 늘리는 규칙이다. 이 규칙을 잘 못 이해하면 corePoolSize 만큼의 pool 밖에 안 만들어진다. | ||
+ | |||
+ | > A ThreadPoolExecutor will automatically adjust the pool size (see getPoolSize()) according to the bounds set by corePoolSize (see getCorePoolSize()) and maximumPoolSize (see getMaximumPoolSize()). When a new task is submitted in method execute(Runnable), | ||
+ | > corePoolSize 만큼의 쓰레드가 만들어져 있으면, 그 다음 쓰레드는 queueCapacity만큼 큐에 쌓여 있다가 corePool로 실행이 인입된다. 따라서 corePoolSize가 작고 queueCapacity가 매우 크면 queue가 꽉차기 전까지는 실제로 쓰레드 풀이 확장되지 않고 계속해서 corePool 만 재사용하게 된다. | ||
+ | |||
+ | * reject : Executor가 shutdown 상태이거나, | ||
+ | * '' |