Day20 - jeremy0405/Codesquad_CS GitHub Wiki
์ง๋์ฃผ์ ๋๋ค๋ฅผ ๋ค๋ฃจ๋ฉด์ ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์ ๋ํด์ ๊ณต๋ถ๋ฅผ ์งํํ์๋ค.
์ด๋ฒ์ฃผ์๋ ๊ณ์ Runnable ๋๋ Callable์ ๋ฑ์ ๊ตฌํํ๋ฉด์ ๋๋ค์์ ๊ณ์ ์ฌ์ฉํ ์ผ์ด ์์๋๋ฐ ์ด๊ฒ ๋๋ค๋ฅผ ์๋ง๊ฒ ์ฌ์ฉํ๋ ๊ฑด๊ฐ? ๋ผ๋ ์๊ฐ์ด ๊ณ์๋ค์๋ค. ๊ทธ๋์ ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์ ๋ํด์ ๋ค์ ํ ๋ฒ ์ ๋ฆฌํด๋ณด๋ ค๊ณ ํ๋ค.
์์ ํจ์๋ ์ํ์ ํจ์์ ๋ฎ์ ์๋ค. ์ ๋ ฅ์ ๋ฐ๋ผ ํญ์ ๋์ผํ ์ ์ผํ ๊ฒฐ๊ณผ๊ฐ ๋์์ผ ํ๋ค. ์ํ์ ํจ์์ ์ฝ๊ฐ ๋ค๋ฅธ ์ ์ ์ ๋ ฅ์ด ์์ด๋ ๊ฒฐ๊ณผ๊ฐ ๋์จ๋ค๋ ๊ฒ ๋ฟ์ด๋ค. ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์์๋ ์์ ํจ์๋ฅผ ์ฌ๋ฌ๊ฐ ์กฐํฉํด์ ํญ์ ๋์ผํ input์ ๋ํด์ ๋์ผํ output์ ๊ธฐ๋ํ ์ ์๋๋ก ํ๋ก๊ทธ๋๋ฐ ํ๋ ๊ฒ์ด๋ค. ์์ฆ์ฒ๋ผ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ฅผ ๋ง์ด ํด์ผ ํ๋ ๊ฒฝ์ฐ์๋ ์์ ํจ์๋ค์ ์กฐํฉ์ผ๋ก ๊ตฌ์ฑ๋์ด ์๋ ๋ฉ์๋๋ฅผ ํตํด์ ์ค๋ ๋ ์ธ์ดํํ๊ฒ ์ ๋ขฐ์ฑ ์๋ output ๋ฐ์ ์ ์๋ค๋ ์ฅ์ ์ด ์๋ค.
private CompletableFuture<Void> startMakingCoffee(String coffee) {
return CompletableFuture.runAsync(() -> {
System.out.println(Thread.currentThread().getName() + " " + coffee + " ์ ์กฐ์์=======================");
try {
Thread.sleep(Coffee.getTime(coffee) * 1000L);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName() + " =======================" + coffee + " ์ ์กฐ์๋ฃ");
}, executorService);
}
๋ด๊ฐ ๊ตฌํํ CompletableFuture์ธ๋ฐ runAsync() ๋ฉ์๋๋ Runable์ ์ธ์๋ก ๋ฐ๋๋ค. ๊ทผ๋ฐ ์ด ์ํฉ์์ input์ coffee๋ก ๋ฃ๊ณ ์ถ์๋ฐ Runnable์๋ input์ด ์๋ค. ๋ํ SupplyAsync() ๋ฅผ ์จ๋ Supplier๋ฅผ ์ธ์๋ก ๋ฐ๊ฒ ๋๋๋ฐ ์ด ๋ํ input์ ๋ฐ์ง ์์ผ๋ ์์ ๊ฐ์ ํจ์๊ฐ ์์ํจ์๋ก ๊ตฌํ์ด ๋ ์๋ง์ ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์ธ์ง ์๋ฌธ์ด ๋ค์๋ค.
๋๋ coffee๋ผ๋ input์ ๋ฐ๋ผ ๊ณ ์ ํ output์ ์ฃผ๊ธฐ ๋๋ฌธ์ ๋๋ ์์ ๊ฐ์ด ์ง๋ ๊ฒ๋ ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์ด๋ผ๊ณ ์๊ฐํ๋๋ฐ ๋ง๋ ์ง ์ ๋ชจ๋ฅด๊ฒ ๋ค..