CodeGym /ํ–‰๋™ /All lectures for KO purposes /์‹คํ–‰์ž: ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ๊ฐœ์ฒด

์‹คํ–‰์ž: ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ๊ฐœ์ฒด

All lectures for KO purposes
๋ ˆ๋ฒจ 1 , ๋ ˆ์Šจ 1049
์‚ฌ์šฉ ๊ฐ€๋Šฅ

6.1 ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ๊ฐœ์ฒด

๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ๋Š” ํŒจํ‚ค์ง€์˜ ๊ฐ€์žฅ ํฐ ๋ถ€๋ถ„์— ๋„๋‹ฌํ–ˆ์Šต๋‹ˆ๋‹ค. Future ๋ฐ Callable ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ†ตํ•ด ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ๊ณผ ํ•จ๊ป˜ ๋น„๋™๊ธฐ ์ž‘์—…์„ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ์ธํ„ฐํŽ˜์ด์Šค์™€ ThreadPoolExecutor, ScheduledPoolExecutor, ForkJoinPool๊ณผ ๊ฐ™์€ ์Šค๋ ˆ๋“œ ํ’€์„ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ์„œ๋น„์Šค ๋ฐ ํŒฉํ† ๋ฆฌ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

๋” ๋‚˜์€ ์ดํ•ด๋ฅผ ์œ„ํ•ด ์ธํ„ฐํŽ˜์ด์Šค์™€ ํด๋ž˜์Šค๋ฅผ ์•ฝ๊ฐ„ ๋ถ„ํ•ดํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

6.2 ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ๊ฐœ์ฒด์˜ ์‹คํ˜„

Future<V>๋น„๋™๊ธฐ ์ž‘์—…์˜ ๊ฒฐ๊ณผ๋ฅผ ์–ป๊ธฐ ์œ„ํ•œ ํ›Œ๋ฅญํ•œ ์ธํ„ฐํŽ˜์ด์Šค์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ํ•ต์‹ฌ ๋ฉ”์„œ๋“œ๋Š” ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ์˜ ๋น„๋™๊ธฐ ์ž‘์—…์ด ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ํ˜„์žฌ ์Šค๋ ˆ๋“œ(์‹œ๊ฐ„ ์ดˆ๊ณผ ์—ฌ๋ถ€์— ๊ด€๊ณ„์—†์ด)๋ฅผ ์ฐจ๋‹จํ•˜๋Š” get ๋ฉ”์„œ๋“œ์ž…๋‹ˆ๋‹ค. ์ž‘์—…์„ ์ทจ์†Œํ•˜๊ณ  ํ˜„์žฌ ์ƒํƒœ๋ฅผ ํ™•์ธํ•˜๋Š” ์ถ”๊ฐ€ ๋ฐฉ๋ฒ•๋„ ์žˆ์Šต๋‹ˆ๋‹ค. FutureTask ํด๋ž˜์Šค๋Š” ์ข…์ข… ๊ตฌํ˜„์œผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

RunnableFuture<V>- Future๊ฐ€ ํด๋ผ์ด์–ธํŠธ API์— ๋Œ€ํ•œ ์ธํ„ฐํŽ˜์ด์Šค์ธ ๊ฒฝ์šฐ RunnableFuture ์ธํ„ฐํŽ˜์ด์Šค๋Š” ์ด๋ฏธ ๋น„๋™๊ธฐ ๋ถ€๋ถ„์„ ์‹œ์ž‘ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. run() ๋ฉ”์„œ๋“œ๋ฅผ ์„ฑ๊ณต์ ์œผ๋กœ ์™„๋ฃŒํ•˜๋ฉด ๋น„๋™๊ธฐ ์ž‘์—…์ด ์ข…๋ฃŒ๋˜๊ณ  get ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ๊ฒฐ๊ณผ๋ฅผ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Callable<V>- ๋น„๋™๊ธฐ ์ž‘์—…์„ ์œ„ํ•œ Runnable ์ธํ„ฐํŽ˜์ด์Šค์˜ ํ™•์žฅ๋œ ์•„๋‚ ๋กœ๊ทธ์ž…๋‹ˆ๋‹ค. ์ž…๋ ฅ๋œ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๊ณ  ํ™•์ธ๋œ ์˜ˆ์™ธ๋ฅผ throwํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ธํ„ฐํŽ˜์ด์Šค์—๋Š” run() ๋ฉ”์„œ๋“œ๊ฐ€ ์—†์ง€๋งŒ ๋งŽ์€ java.util.concurrent ํด๋ž˜์Šค๊ฐ€ Runnable๊ณผ ํ•จ๊ป˜ ์ด๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

FutureTask<V>โ€” Future/RunnableFuture ์ธํ„ฐํŽ˜์ด์Šค ๊ตฌํ˜„. ๋น„๋™๊ธฐ ์ž‘์—…์€ Runnable ๋˜๋Š” Callable ๊ฐœ์ฒด์˜ ํ˜•ํƒœ๋กœ ์ƒ์„ฑ์ž ์ค‘ ํ•˜๋‚˜์— ๋Œ€ํ•œ ์ž…๋ ฅ์œผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. FutureTask ํด๋ž˜์Šค ์ž์ฒด๋Š” ์˜ˆ๋ฅผ ๋“ค์–ด new Thread(task).start() ๋˜๋Š” ThreadPoolExecutor๋ฅผ ํ†ตํ•ด ์ž‘์—…์ž ์Šค๋ ˆ๋“œ์—์„œ ์‹œ์ž‘๋˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋น„๋™๊ธฐ ์ž‘์—…์˜ ๊ฒฐ๊ณผ๋Š” get(...) ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ๊ฒ€์ƒ‰๋ฉ๋‹ˆ๋‹ค.

Delayed- ๋ฏธ๋ž˜์— ์‹œ์ž‘ํ•ด์•ผ ํ•˜๋Š” ๋น„๋™๊ธฐ ์ž‘์—…๊ณผ DelayQueue์—์„œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋น„๋™๊ธฐ ์ž‘์—… ์‹œ์ž‘ ์ „ ์‹œ๊ฐ„์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ScheduledFuture<V>- Future ๋ฐ Delayed ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ฒฐํ•ฉํ•œ ๋งˆ์ปค ์ธํ„ฐํŽ˜์ด์Šค.

RunnableScheduledFuture<V>- RunnableFuture์™€ ScheduledFuture๋ฅผ ๊ฒฐํ•ฉํ•œ ์ธํ„ฐํŽ˜์ด์Šค. ๋˜ํ•œ ์ž‘์—…์ด ์ผํšŒ์„ฑ ์ž‘์—…์ธ์ง€ ๋˜๋Š” ์ง€์ •๋œ ๋นˆ๋„๋กœ ์‹คํ–‰๋˜์–ด์•ผ ํ•˜๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฝ”๋ฉ˜ํŠธ
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION