문서의 선택한 두 판 사이의 차이를 보여줍니다.
양쪽 이전 판 이전 판 다음 판 | 이전 판 다음 판 양쪽 다음 판 | ||
springframework:async [2021/11/02 09:52] kwon37xi [Cached Thread Pool 효과] |
springframework:async [2022/06/28 15:43] kwon37xi [MdcTaskDecorator.java] |
||
---|---|---|---|
줄 2: | 줄 2: | ||
* [[http:// | * [[http:// | ||
* [[https:// | * [[https:// | ||
+ | * [[java: | ||
+ | * 비동기 작업시 [[springframework: | ||
===== 설정 ===== | ===== 설정 ===== | ||
줄 21: | 줄 23: | ||
===== ThreadPoolTaskExecutor 설정 ===== | ===== ThreadPoolTaskExecutor 설정 ===== | ||
* [[java: | * [[java: | ||
- | * wait 설정으로 서버 종료시 남은 작업을 기다릴 시간 확보 | + | * wait 설정으로 서버 종료시 남은 작업을 기다릴 시간 확보해야함. 아래를 안해주면 서버가 그냥 종료 돼 버린다. |
* '' | * '' | ||
* '' | * '' | ||
줄 27: | 줄 29: | ||
* [[https:// | * [[https:// | ||
* fixed? cached? | * fixed? cached? | ||
+ | * 서버 종료시 올바로 종료됨을 보장하려면 [[springframework: | ||
+ | |||
===== Cached Thread Pool 효과 ===== | ===== Cached Thread Pool 효과 ===== | ||
- | * corePoolSize 는 적게, maxPoolSize='' | + | * corePoolSize 는 적게 |
* 기본 CorePoolSize 만큼 풀을 생성하고, | * 기본 CorePoolSize 만큼 풀을 생성하고, | ||
* 필요하면 쓰레드풀을 최대 maxPoolSize 만큼 증가시키고 | * 필요하면 쓰레드풀을 최대 maxPoolSize 만큼 증가시키고 | ||
줄 37: | 줄 41: | ||
ThreadPoolTaskExecutor threadPoolTaskExecutor = new ThreadPoolTaskExecutor(); | ThreadPoolTaskExecutor threadPoolTaskExecutor = new ThreadPoolTaskExecutor(); | ||
threadPoolTaskExecutor.setThreadNamePrefix(" | threadPoolTaskExecutor.setThreadNamePrefix(" | ||
- | threadPoolTaskExecutor.setCorePoolSize(10); | + | threadPoolTaskExecutor.setCorePoolSize(0); |
threadPoolTaskExecutor.setMaxPoolSize(Integer.MAX_VALUE); | threadPoolTaskExecutor.setMaxPoolSize(Integer.MAX_VALUE); | ||
threadPoolTaskExecutor.setQueueCapacity(0); | threadPoolTaskExecutor.setQueueCapacity(0); | ||
줄 73: | 줄 77: | ||
// Right now: @Async thread context ! | // Right now: @Async thread context ! | ||
// (Restore the Web thread context' | // (Restore the Web thread context' | ||
+ | if (contextMap == null) { | ||
+ | return; | ||
+ | } | ||
MDC.setContextMap(contextMap); | MDC.setContextMap(contextMap); | ||
runnable.run(); | runnable.run(); |