Skip to content

Latest commit

ย 

History

History
38 lines (25 loc) ยท 2.13 KB

File metadata and controls

38 lines (25 loc) ยท 2.13 KB

@Async

Spring์—์„œ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•

  • Application ํด๋ž˜์Šค ๋˜๋Š” ๊ด€๋ จ Configuration ํด๋ž˜์Šค์— @EnableAsync ์–ด๋…ธํ…Œ์ด์…˜์„ ์ถ”๊ฐ€
  • ๋ณ„๋„ ์Šค๋ ˆ๋“œ์—์„œ ๋น„๋™๊ธฐ๋กœ ์‹คํ–‰ํ•˜๊ณ ์ž ํ•˜๋Š” ๋ฉ”์„œ๋“œ์— @Async ์–ด๋…ธํ…Œ์ด์…˜์„ ์ถ”๊ฐ€

๋™์ž‘ ์›๋ฆฌ

  • proxy๋ฅผ ์ด์šฉ
  • ์ฆ‰, @Async๊ฐ€ ๋‹ฌ๋ฆฐ ๋ฉ”์„œ๋“œ๋Š” ํ”„๋ก์‹œ ๊ฐ์ฒด๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉํ•  ์Šค๋ ˆ๋“œ ์„ ์ • ๋ฐ ์ž‘์—… ํ• ๋‹น์ด๋ผ๋Š” ํšก๋‹จ ๊ด€์‹ฌ์‚ฌ ๋กœ์ง์ด ์ˆ˜ํ–‰๋œ ํ›„์— ํ˜ธ์ถœ๋จ
  • ๋”ฐ๋ผ์„œ, ์ ‘๊ทผ ์ œ์–ด์ž๊ฐ€ public์ด์–ด์•ผ ํ•˜๋ฉฐ self-invocation์ด ๋ถˆ๊ฐ€๋Šฅ

๋ฐ˜ํ™˜ ํƒ€์ž…

void

  • ๋ฉ”์„œ๋“œ์˜ ๋ฐ˜ํ™˜ ๊ฒฐ๊ณผ๊ฐ€ ์–ด๋”˜๊ฐ€์—์„œ ์“ฐ์ด์ง€ ์•Š์„ ๋•Œ์—๋Š” ์•„๋ฌด๊ฒƒ๋„ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š๋„๋ก ์ฒ˜๋ฆฌํ•˜๋ฉด ๋จ

Future, CompletableFuture

  • ๋ฐ˜ํ™˜ ๊ฒฐ๊ณผ๋ฅผ ํ†ตํ•ด ์ถ”๊ฐ€์ ์ธ ์ฒ˜๋ฆฌ๊ฐ€ ์ด๋ฃจ์–ด์ ธ์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ์œ„์˜ 2๊ฐ€์ง€๋ฅผ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ์Œ
  • ๋” ์„ธ๋ฐ€ํ•œ ์ปจํŠธ๋กค์„ ์›ํ•˜๊ณ , Java 8 ์ด์ƒ์˜ ๋ฒ„์ „์„ ์“ด๋‹ค๋ฉด ํ›„์ž ์ชฝ์ด ์ข€ ๋” ๋‚˜์€ ์„ ํƒ์ด๋ผ ๋ณผ ์ˆ˜ ์žˆ์Œ

Executor

  • ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์„ค์ •ํ•˜๋ฉด SimpleAsyncTaskExecutor๋ฅผ ์‚ฌ์šฉ
    • ๋น„๋™๊ธฐ ๋กœ์ง์ด ํ˜ธ์ถœ๋  ๋•Œ๋งˆ๋‹ค ์ƒˆ๋กœ์šด ์Šค๋ ˆ๋“œ๋ฅผ ์ƒ์„ฑํ•˜๋Š” Executor
  • ๋งค๋ฒˆ ์ƒˆ๋กœ์šด ์Šค๋ ˆ๋“œ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ๊ฐ€์ง
    • ๋„ˆ๋ฌด ๋งŽ์€ ์Šค๋ ˆ๋“œ๊ฐ€ ์ƒ์„ฑ๋  ์ˆ˜ ์žˆ์Œ - 100๋งŒ ๊ฐœ ์š”์ฒญ์ด ์˜ค๋ฉด 100๋งŒ ๊ฐœ ์Šค๋ ˆ๋“œ๋ฅผ ๋งŒ๋“œ๋Š”๋ฐ?
    • ๋งค๋ฒˆ ์Šค๋ ˆ๋“œ๋ฅผ ์ƒˆ๋กœ ๋งŒ๋“œ๋Š” ๊ฒƒ์€ ์Šค๋ ˆ๋“œ ์ƒ์„ฑ ๋น„์šฉ์„ ๊ณผ๋„ํ•˜๊ฒŒ ์ง€๋ถˆํ•˜๋Š” ์ผ
  • ๋”ฐ๋ผ์„œ, ์ปค์Šคํ…€ ThreadPoolTaskExecutor๋ฅผ ๋งŒ๋“ค์–ด ์ ์ ˆํ•œ ๊ฐœ์ˆ˜์˜ ์Šค๋ ˆ๋“œ ํ’€์„ ์ด์šฉํ•  ๊ฒƒ์„ ๊ถŒ์žฅ
    • ๋‚˜๋Š” ์ด ์ปค์Šคํ…€ Executor๋ฅผ AsyncConfig์— ๋ชจ์•„๋‘๊ณ , ํ•ด๋‹น Config์— @EnableAsync๋ฅผ ๋ถ™์—ฌ๋†“๋Š” ๋ฐฉ์‹์„ ์‚ฌ์šฉ ์ค‘

์˜ˆ์™ธ ์ฒ˜๋ฆฌ

  • ๋‹น์—ฐํ•œ ๋ง์ด์ง€๋งŒ, ๋น„๋™๊ธฐ ๋กœ์ง์€ ํ˜ธ์ถœ ์‹œ์ ๋ถ€ํ„ฐ ๋ณ„๋„ ์Šค๋ ˆ๋“œ๋กœ ๋ถ„๋ฆฌ๋˜๋ฏ€๋กœ ์˜ˆ์™ธ๊ฐ€ ํ˜ธ์ถœ์ž์—๊ฒŒ ์ „ํŒŒ๋˜์ง€ ์•Š์Œ
  • ๋ฐ˜ํ™˜๊ฐ’์„ ์ฝœ๋ฐฑ์œผ๋กœ ์ „๋‹ฌ๋ฐ›๋Š” ๋ฉ”์„œ๋“œ์—์„œ๋Š” ์˜ˆ์™ธ์ฒ˜๋ฆฌ๊ฐ€ ์–ด๋ ต์ง€ ์•Š์ง€๋งŒ, ๋ฐ˜ํ™˜๊ฐ’์ด void์ธ ๊ฒฝ์šฐAsyncUncaughtExceptionHandler๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ํด๋ž˜์Šค์—์„œ ๋ณ„๋„์˜ ์˜ˆ์™ธ ํ•ธ๋“ค๋ง์„ ํ•ด ์ค˜์•ผ ํ•จ