CompletableFuture

CompletableFuture ๋ž€?

  • Java์—์„œ ๋น„๋™๊ธฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์ง€์›ํ•œ๋‹ค

  • Future์™€ CompletionStage๋ฅผ ๊ตฌํ˜„ํ•œ class๋‹ค

    • Future๋ž€?

      • ๋น„๋™๊ธฐ์ ์ธ ์—ฐ์‚ฐ์˜ ๊ฒฐ๊ณผ๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ํด๋ž˜์Šค

        • ์˜ˆ์•ฝ๋œ ์ž‘์—…์— ๋Œ€ํ•œ ๊ฒฐ๊ณผ๋ฅผ ์•Œ ์ˆ˜ ์žˆ๋‹ค

      • multi-thread ํ™˜๊ฒฝ์—์„œ ์ฒ˜๋ฆฌ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฅธ thread์— ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๋‹ค

      • ๋‚ด๋ถ€์ ์œผ๋กœ Thread-Safe ํ•˜๊ฒŒ ๊ตฌํ˜„๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— synchronized block ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค

  • Future์—์„œ ํ•˜๊ธฐ ์–ด๋ ค์› ๋˜ ์•„๋ž˜์˜ ์ž‘์—…์„ ์ˆ˜์›”ํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค

    • Future๋ฅผ ์™ธ๋ถ€์—์„œ ์™„๋ฃŒ์‹œํ‚ฌ ์ˆ˜ ์—†๋‹ค

      • ์ทจ์†Œํ•˜๊ฑฐ๋‚˜, get()์— ํƒ€์ž„์•„์›ƒ์„ ์„ค์ •ํ•  ์ˆ˜ ์—†๋‹ค

    • ๋ธ”๋กœํ‚น ์ฝ”๋“œ (get())๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ ์„œ๋Š” ์ž‘์—…์ด ๋๋‚ฌ์„ ๋•Œ ์ฝœ๋ฐฑ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์—†๋‹ค

      • Future๋ฅผ ํ†ตํ•ด ๊ฒฐ๊ณผ๊ฐ’์„ ๋งŒ๋“ค๊ณ  ๋ฌด์–ธ๊ฐ€๋ฅผ ํ•˜๋Š” ์ž‘์—…์€ get() ์ดํ›„์— ์™€์•ผํ•œ๋‹ค

    • ์—ฌ๋Ÿฌ Future๋ฅผ ์กฐํ•ฉํ•  ์ˆ˜ ์—†๋‹ค

      • ex) ์ด๋ฒคํŠธ ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜จ ๋‹ค์Œ์— ์ด๋ฒคํŠธ์— ์ฐธ์—ฌํ•œ ํšŒ์› ๋ชฉ๋ก ๊ฐ€์ ธ์˜ค๊ธฐ

    • ์˜ˆ์™ธ ์ฒ˜๋ฆฌ์šฉ API๋ฅผ ์ œ๊ณตํ•˜์ง€ ์•Š๋Š”๋‹ค

Last updated