์ด์ ์๋ ์๋์ ๊ฐ์ด ์๋น์ค ๋จ์์ ๋น๋๊ธฐ ๋ฉ์๋๋ฅผ ํธ์ถํ ๋ try/catch ๋ฌธ์ ์ฌ์ฉํ์ฌ RejectedExecutorException์ ๋ํ ๋ฐฉ์ด๋ก์ง์ ์ถ๊ฐํ์๋ค.
์ด๋ฌํ ์ฌ์ค์ ์๊ฒ๋๊ณ ํ์ฌ์ ๊ณต์ ํ์๋๋ฐ ์ ๊ธฐํ ์ฌ์ค์ ์๊ฒ๋์๋ค.
try/catch๋ฌธ์ผ๋ก ๋ฐฉ์ด๋ก์ง์ ์ถ๊ฐํด์ฃผ์ง ์์๋ AsyncConfig์์ RejectedExecutorException์ ๋ํ ๋์ ์ฒ๋ฆฌ๋ฅผ ์ค์ ํ ์ ์๋ค๋ ๊ฒ์ด๋ค.
๋ฐ๋ก ์ด๋ ๊ฒ ๋ง์ด๋ค ..
setRejectedExecutionHandler : RejectedExecution ์์ธ๊ฐ ๋ฐ์ํ์ ๋ ์ด๋ป๊ฒ ์ฒ๋ฆฌํ ์ง์ ๋ํ ์ต์ ์ด๋ค.
new ThreadPoolExecutor์์ ํธ์ถํ๋ ๋ฉ์๋๋ 4๊ฐ์ง๊ฐ ์๋ค.
- AbortPolicy : ๋ํดํธ๊ฐ. RejectedExecutionException์ ๋ฐ์์ํจ๋ค.
- DiscardOldestPolicy : ์ค๋๋ ์์ ์ ๋ฌด์ํ๋ค.
- DiscardPolicy : ์ฒ๋ฆฌํ๋ ค๋ ์์ ์ ๋ฌด์ํ๋ค.
- CallerRunsPolicy : shutdown ์ํ๊ฐ ์๋ ๋, ThreadPoolTaskExecutor์ ์์ฒญํ thread์์ ๋ค๋ฅธ thread์ ์์ํ์ง ์๊ณ ์ง์ ์ฒ๋ฆฌํ๋ค.
์ฆ, ์์ฒญํ ์ฐ๋ ๋๊ฐ ๋ฉ์ธ์ฐ๋ ๋์๋ค๋ฉด ๋ค๋ฅธ ์ฐ๋ ๋์ ์์ํ์ง ์๊ณ ๋ฉ์ธ์ฐ๋ ๋๊ฐ ์ง์ ์ฒ๋ฆฌํ๋ค๋ ๊ฒ์ด๋ค.
=> ์ฐ๋ ๋ํ์ด ๋ค ์ฐผ์ ๋ ์์ฒญํ ์ฐ๋ ๋์์ ๋๊ธฐ๋ก ์ฒ๋ฆฌํ๋ค๋ ๊ฒ์ด๋ค.
RejectedExecutorException์ ํธ๋ค๋งํ๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ด ์์๋ค.
AsyncConfig ๋ด์์ ์ค์ ํด์ค ์ ์๋ค. ๋ค์ ํฌ์คํ ์ ์ ๋ฆฌํ์๋ค.