1. Runnable
์ด๋ค ๊ฐ์ฒด๋ ๋ฆฌํดํ์ง ์์. Exception์ ๋ฐ์์ํค์ง ์์.
1-1) Runnable
Thread๋ Runnable์ ์ธ์๋ก ๋ฐ๊ณ ์คํํจ.
์ด๋ค ๊ฐ๋ ๋ฆฌํดํ์ง ์์ผ๋ฉฐ Runnable์ Run() ๋ฉ์๋์ ์ ์๋ ์ฝ๋๋ฅผ ์ํํจ.
1-2) Runnable Code Image
โ Override vs Overload(Click)
โ ๊ฒฐ๊ณผ : Called at 21:13:10.332
1-3) ์์ ์ฝ๋๋ฅผ Lambda ์์ผ๋ก ํํํ ์ฝ๋
1-3)-1. Lambda์ ๊ฐ๋
๋๋ค ํจ์๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์ ์ฌ์ฉ๋๋ ๊ฐ๋ ์ผ๋ก ์ต๋ช ํจ์๋ฅผ ์ง์นญํ๋ ์ฉ์ด์.
ํ์ฌ ์ฌ์ฉ๋๊ณ ์๋ ๋๋ค์ ๊ทผ๊ฐ์ ์ํ๊ณผ ๊ธฐ์ด ์ปดํจํฐ๊ณผํ ๋ถ์ผ์์์ ๋๋ค ๋์์.
๋๋ค ๋์๋ ๊ฐ๋จํ ๋งํ๋ฉด ์ํ์์ ์ฌ์ฉํ๋ ํจ์๋ฅผ ๋ณด๋ค ๋จ์ํ๊ฒ ํํํ๋ ๋ฐฉ๋ฒ์.
๋๋ค ๋์๋ ์ต๋ช ํจ์ ์ด๊ธฐ์ ์ด๋ฆ์ ๊ฐ์ง ํ์๊ฐ ์์.
๋ ๊ฐ ์ด์์ ์ ๋ ฅ์ด ์๋ ํจ์๋ ์ต์ข ์ ์ผ๋ก 1๊ฐ์ ์ ๋ ฅ๋ง ๋ฐ๋ ๋๋ค ๋์๋ก ๋จ์ํ๋ ์ ์์.
Curring(Click)์.
1-3)-2. Lambda์ ์ฅ๋จ์
์ฅ์
โ ์ฝ๋์ ๊ฐ๊ฒฐ์ฑ : ๋๋ค๋ฅผ ์ฌ์ฉํ๋ฉด ๋ถํ์ํ ๋ฐ๋ณต๋ฌธ์ ์ญ์ ๊ฐ ๊ฐ๋ฅํ๋ฉฐ
๋ณต์กํ ์์ ๋จ์ํ๊ฒ ํํํจ.
โ ์ง์ฐ์ฐ์ฐ ์ํ : ๋๋ค๋ ์ง์ฐ์ฐ์์ ์ํํจ์ผ๋ก์จ ๋ถํ์ํ ์ฐ์ฐ์ ์ต์ํํ ์ ์์.
โ ๋ณ๋ ฌ์ฒ๋ฆฌ ๊ธฐ๋ฅ : Multi-Thread(Click)๋ฅผ ํ์ฉํ์ฌ ๋ณ๋ ฌ์ฒ๋ฆฌ๋ฅผ ์ฌ์ฉํ ์ ์์.
๋จ์
โ ๋๋ค์์ ํธ์ถ์ด ๊น๋ค๋ก์
โ ๋๋ค Stream ์ฌ์ฉ์ ๋จ์ for๋ฌธ ํน์ while๋ฌธ ์ฌ์ฉ์ ์ฑ๋ฅ์ด ๋จ์ด์ง.
โ ๋ถํ์ํ๊ฒ ๋๋ฌด ์ฌ์ฉํ๊ฒ ๋๋ฉด ์คํ๋ ค ๊ฐ๋ ์ฑ์ ๋จ์ด๋จ๋ฆด ์ ์์.
1-3)-3. Lambda์ ํํ์
โ ๋๋ค๋ ๋งค๊ฐ๋ณ์ ํ์ดํ(โ) ํจ์๋ชธ์ฒด๋ก ์ด์ฉํ์ฌ ์ฌ์ฉํ ์ ์์.
โ ํจ์ ๋ชธ์ฒด๊ฐ ๋จ์ผ ์คํ๋ฌธ์ด๋ฉด ๊ดํธ๋ฅผ ์๊ฐํ ์ ์์.
โ ํจ์ ๋ชธ์ฒด๊ฐ return์ผ๋ก๋ง ๊ตฌ์ฑ๋ ์๋ ๊ฒฝ์ฐ ๊ดํธ{}๋ฅผ ์๋ต ํ ์ ์์.
//์ ์์ ์ธ ์ ํ
() -> {}
() -> 1
() -> { return 1; }
(int x) -> x+1
(x) -> x+1
x -> x+1
(int x) -> { return x+1; }
x -> { return x+1; }
(int x, int y) -> x+y
(x, y) -> x+y
(x, y) -> { return x+y; }
(String lam) -> lam.length()
lam -> lam.length()
(Thread lamT) -> { lamT.start(); }
lamT -> { lamT.start(); }
//์๋ชป๋ ์ ํ ์ ์ธ๋ type๊ณผ ์ ์ธ๋์ง ์์ type์ ๊ฐ์ด ์ฌ์ฉ ํ ์ ์๋ค.
(x, int y) -> x+y
(x, final y) -> x+y
1-3)-4. Lambda์ Java Code
2. Callable
ํน์ ํ์ ์ ๊ฐ์ฒด๋ฅผ ๋ฆฌํดํจ. Exception์ ๋ฐ์์ํฌ ์ ์์.
2-1) Callable
Thread๋ FutureTask๋ฅผ ํตํด์ Callable์ ํธ์ถํจ.
FuntureTask.get()์ผ๋ก Callable์ call() ๋ฉ์๋๊ฐ ํธ์ถ๋์ด ๊ฒฐ๊ณผ๊ฐ ๋ฆฌํด๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆผ.
2-2) Callable Java Code
โ ๊ฒฐ๊ณผ result : Called at : 21:17:54.051
3. ExecutorService
ExecutorService๋ Callable์ job์ผ๋ก ๋ฑ๋กํ๊ณ ์ํ์ํฌ ์ ์์.
๋ค์ ์ฝ๋์ฒ๋ผ Future๋ฅผ ์ด์ฉํ์ฌ ๊ฒฐ๊ณผ๋ฅผ ๋ฆฌํด๋ฐ์ ์ ์์.
3-1) ExecutorService Java Code
โ ๊ฒฐ๊ณผ result : Called at 21:19:25.693
3-2) Lambda์ ํํ