์๋ฐ 8(3)
-
[JAVA] ๋ ์๋ฐ, Java 8 CompletableFuture
1๏ธโฃ Concurrent ์ํํธ์จ์ด ๋? ๋์์ ์ฌ๋ฌ ์์ ์ ํ ์ ์๋ ์ํํธ์จ์ด ์) ์น ๋ธ๋ผ์ฐ์ ๋ก ์ ํ๋ธ๋ฅผ ๋ณด๋ฉด์ ํค๋ณด๋๋ก ๋ฌธ์์ ํ์ดํ์ ํ ์ ์๋ค. ์) ๋ นํ๋ฅผ ํ๋ฉด์ IntelliJ๋ก ์ฝ๋ฉ์ ํ๊ณ ์๋์ ์ ์ด๋ ๋ฌธ์๋ฅผ ๋ณด๊ณ ๋ ์์ ํ ์ ์๋ค. 2๏ธโฃ ์๋ฐ์์ ์ง์ํ๋ Concurrent ํ๋ก๊ทธ๋๋ฐ : ๋ฉํฐ ํ๋ก์ธ์ฑ(ProcessBuilder), ๋ฉํฐ ์ฐ๋ ๋ 3๏ธโฃ ์๋ฐ ๋ฉํฐ์ฐ๋ ๋ ํ๋ก๊ทธ๋๋ฐ Thread/ Runnable - ์ฐ๋ ๋๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ Thread ์์๋ฐ์์ ๊ตฌํ Runnable ๊ตฌํ ๋๋ ๋๋ค - ์ฐ๋ ๋์ ์ฃผ์ ๊ธฐ๋ฅ ํ์ฌ ์ฐ๋ ๋ ๋ฉ์ถฐ๋๊ธฐ (sleep) ๋ค๋ฅธ ์ฐ๋ ๋ ๊นจ์ฐ๊ธฐ (interrupt) ๋ค๋ฅธ ์ฐ๋ ๋ ๊ธฐ๋ค๋ฆฌ๊ธฐ (join) 4๏ธโฃ Executors : ๊ณ ์์คHigh-Level..
2022.04.11 -
[JAVA] ๋ ์๋ฐ, Java 8 Stream
1๏ธโฃ Stream ์คํธ๋ฆผ์ ๋ฐ์ดํฐ๋ฅผ ๋ด๊ณ ์๋ ์ ์ฅ์(Collection) ์ด ์๋๋ค! Functional in nature, ์คํธ๋ฆผ์ด ์ฒ๋ฆฌํ๋ ๋ฐ์ดํฐ ์์ค๋ฅผ ๋ณ๊ฒฝํ์ง ์๋๋ค. ์คํธ๋ฆผ์ผ๋ก ์ฒ๋ฆฌํ๋ ๋ฐ์ดํฐ๋ ์ค์ง ํ๋ฒ๋ง ์ฒ๋ฆฌํ๋ค! ๋ฌด์ ํ์ผ ์๋ ์๋ค. -> ๊ทผ๋ฐ Short Circuit ๋ฉ์๋๋ฅผ ์ฌ์ฉํด์ ์ ํํ ์ ์๋ค. ์ค๊ฐ ์คํผ๋ ์ด์ ์ ๊ทผ๋ณธ์ ์ผ๋ก lazyํ๋ค. ์์ฝ๊ฒ ๋ณ๋ ฌ์ฒ๋ฆฌํ ์ ์๋ค. 2๏ธโฃ ์คํธ๋ฆผ ํ์ดํ๋ผ์ธ 0 ๋๋ ๋ค์์ ์ค๊ฐ ์คํผ๋ ์ด์ (Intermediate operation) ๊ณผ ํ๊ฐ์ ์ข ๋ฃ ์คํผ๋ ์ด์ (Terminal operation)์ผ๋ก ๊ตฌ์ฑํ๋ค. ์คํธ๋ฆผ์ ๋ฐ์ดํฐ ์์ค๋ ์ค์ง ํฐ๋ฏธ๋ ์คํผ๋ ์ด์ ์ ์คํํ ๋์๋ง ์ฒ๋ฆฌํ๋ค. 3๏ธโฃ ์ค๊ฐ ์คํผ๋ ์ด์ Stream์ ๋ฆฌํดํ๋ค. Stateless/..
2022.04.06 -
[JAVA] ๋ ์๋ฐ, Java 8 ์ธํฐํ์ด์ค ๋ณํ
1๏ธโฃ ๊ธฐ๋ณธ ๋ฉ์๋ Default Methods ์ธํฐํ์ด์ค์ ๋ฉ์๋ ์ ์ธ์ด ์๋๋ผ ๊ตฌํ์ฒด๋ฅผ ์ ๊ณตํ๋ ๋ฐฉ๋ฒ ํด๋น ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ ํด๋์ค๋ฅผ ๊นจํธ๋ฆฌ์ง ์๊ณ ์ ๊ธฐ๋ฅ์ ์ถ๊ฐํ ์ ์๋ค. ๊ธฐ๋ณธ ๋ฉ์๋๋ ๊ตฌํ์ฒด๊ฐ ๋ชจ๋ฅด๊ฒ ์ถ๊ฐ๋ ๊ธฐ๋ฅ์ผ๋ก ๊ทธ ๋งํผ ๋ฆฌ์คํฌ๊ฐ ์๋ค. -> ์ปดํ์ผ ์๋ฌ๋ ์๋์ง๋ง ๊ตฌํ์ฒด์ ๋ฐ๋ผ ๋ฐํ์ ์๋ฌ๊ฐ ๋ฐ์ํ ์ ์๋ค. -> ๋ฐ๋์ ๋ฌธ์ํํ ๊ฒ!! (@ImpleSpec ์๋ฐ๋ ํ๊ทธ ์ฌ์ฉ!) Object๊ฐ ์ ๊ณตํ๋ ๊ธฐ๋ฅ(equals, hasCode)๋ ๊ธฐ๋ณธ ๋ฉ์๋๋ก ์ ๊ณตํ ์ ์๋ค. -> ๊ตฌํ์ฒด๊ฐ ์ฌ์ ์ํด์ผํ๋ค. ๋ณธ์ธ์ด ์์ ํ ์ ์๋ ์ธํฐํ์ด์ค์๋ง ๊ธฐ๋ณธ ๋ฉ์๋๋ฅผ ์ ๊ณตํ ์ ์๋ค. ์ธํฐํ์ด์ค๋ฅผ ์์๋ฐ๋ ์ธํฐํ์ด์ค์์ ๋ค์ ์ถ์ ๋ฉ์๋๋ฅผ ๋ณ๊ฒฝํ ์ ์๋ค. ์ธํฐํ์ด์ค ๊ตฌํ์ฒด๊ฐ ์ฌ์ ์ํ ์๋ ์๋ค. de..
2022.04.06