item07(4)
-
[์ดํํฐ๋ธ ์๋ฐ] Item07 ์๋ฒฝ๊ณต๋ต. Executor
item07. ๋ค ์ด ๊ฐ์ฒด ์ฐธ์กฐ๋ฅผ ํด์ ํ๋ผ. " p39. ๋ฐฑ๊ทธ๋ผ์ด๋ ์ฐ๋ ๋, ScheduledThreadPoolExecutor" Executor๋ฅผ ์๊ธฐ์ ์ Thread, Runnable์ด ๋ญ์ง๋ถํฐ ์์์ผ Executor๋ฅผ ์ดํดํ ์ ์๊ธฐ ๋๋ฌธ์ ๋จผ์ Thread์ Runnable์ด ๋ฌด์์ธ์ง๋ถํฐ ์ฐพ์๋ดค๋ค. ์ฐ์ ์ฐ๋ ๋๋ ํ๋ก๊ทธ๋จ ์คํ์ ๊ฐ์ฅ ์์ ๋จ์๋ก, ์ผ๋ฐ์ ์ผ๋ก ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค์ด ์คํํ๋ฉด 1๊ฐ์ ๋ฉ์ธ ์ค๋ ๋์ ์ํด ํ๋ก๊ทธ๋จ์ด ์คํ๋๋ค. ๊ทธ๋ฐ๋ฐ 1๊ฐ์ ์ค๋ ๋ ๊ฐ์ง๊ณ ๋ ๋์์ ์ฌ๋ฌ ์์ ์ ์ํํ ์๊ฐ ์๋ค. ๋ฐ๋ผ์ ๋์์ ์ฌ๋ฌ ์์ ์ ์ํํ๊ธฐ ์ํด์๋ ๋ณ๋์ ์ค๋ ๋๋ฅผ ๋ง๋ค์ด์ ์คํํด์ผ ํ๋ค. ์๋ฐ์์๋ ๋ฉํฐ ์ค๋ ๋ ๊ธฐ๋ฐ์ผ๋ก ๋์์ฑ ํ๋ก๊ทธ๋๋ฐ์ ์ง์ํ๊ธฐ ์ํด์ Runnable, Thread, Callab..
2023.01.21 -
[์ดํํฐ๋ธ ์๋ฐ] Item07 ์๋ฒฝ๊ณต๋ต. WeakHashMap
item07. ๋ค ์ด ๊ฐ์ฒด ์ฐธ์กฐ๋ฅผ ํด์ ํ๋ผ. " p38. WeakHashMap, ์ฝํ ์ฐธ์กฐ (Weak reference)" WeakHashMap์ด๋? : ๋์ด์ ์ฌ์ฉํ์ง ์๋ ๊ฐ์ฒด๋ฅผ GCํ ๋ ์๋์ผ๋ก ์ญ์ ํด์ฃผ๋ Map์ด๋ค. ์ด๋ ๋งต์ value๊ฐ ์๋๋ผ key๋ฅผ ๊ธฐ์ค์ผ๋ก key๋ฅผ ๋์ด์ ๊ฐํ๊ฒ ์ฐธ์กฐ๋๋ ๊ณณ์ด ์๋ค๋ฉด ํด๋น ์ํธ๋ฆฌ๋ฅผ ์ ๊ฑฐํ๋ค. ๊ทธ๋ฌ๋ฏ๋ก ๋งต์ key์ ์์กดํ๋ ๊ฒฝ์ฐ์ ์ฌ์ฉํ ์ ์๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ ์กฐ์ฌํด์ผ ํ๋ ๊ฒ์ Integer, String ๊ณผ ๊ฐ์ ๊ฐ๋ค์ ๋์ด์ ์ฌ์ฉํ์ง ์๋๋ค๊ณ ํ๋๋ผ๋ ์ ๊ฑฐ๋์ง ์๋๋ค..!! ์ด๋๊ฐ์ ๊ฐ์ด ์ ์ฅ? ๋์ด ์๊ธฐ ๋๋ฌธ์ด๋ค. package chapter01.item07.cache; import java.util.HashMap; import java.util...
2023.01.21 -
[์ดํํฐ๋ธ ์๋ฐ] Item07 ์๋ฒฝ๊ณต๋ต.NullPointerException
item07. ๋ค ์ด ๊ฐ์ฒด ์ฐธ์กฐ๋ฅผ ํด์ ํ๋ผ. " p37 NullPointerException." ๊ฐ๋ฐ์ ํ๋ค๋ณด๋ฉด ์ ์ผ ๋ง์ด ์ ํ๊ฒ ๋๋ ์๋ฌ ์ค ํ๋๊ฐ NPE, NullPointerException ์ด๋ค. ๊ทผ๋ฐ ์๊ฐ์ ํด๋ณด๋ฉด NPE๋ ์๋ฌ ์ค๋ช ๋ง ๋ด๋ ์ถฉ๋ถํ ์ด๋์ ์๋ฌ๊ฐ ๋ฌ๋์ง ํ์ธ๋ ์ฝ๊ณ , ์ ๋ฌ๋์ง๋ ๊ธ๋ฐฉ ์ ์ ์์ด์ ๊ทธ๋๋ง(?) ์์ฝ๊ฒ ํด๊ฒฐํ ์ ์๋ ์๋ฌ์ด๋ค. NPE๋ฅผ ๋ง๋์ง ์๊ธฐ ์ํด์ java 8์์๋ Optional์ด๋ผ๋ ๊ฒ์ ์ ๊ณตํ๊ณ ์๋๋ฐ ์ด๊ฑธ ํ์ฉํ๋ฉด NPE๋ ์ต๋ํ ํผํ ์ ์๋ค. NullPointerException์ด ๋ฐ์ํ๋ ์ด์ : ์ฐ์ NPE ์ฒ๋ฆฌ ๋ฐฉ๋ฒ์ ์ ๋ฆฌํ๊ธฐ ์ ์ ๊ฐ๋จํ๊ฒ๋ผ๋ NPE ๋ฐ์ ์ด์ ๋ฅผ ์์ฑํด๋ณธ๋ค. ๋จผ์ NPE ๊ฐ ๋ฐ์ํ๋ ์ด์ ๋ ๋ฉ์๋์์ null๋ฅผ ๋ฆฌํดํ๊ณ ..
2023.01.21 -
[์ดํํฐ๋ธ ์๋ฐ] Item7. ๋ค ์ด ๊ฐ์ฒด ์ฐธ์กฐ๋ฅผ ํด์ ํ๋ผ.
item07. ๋ค ์ด ๊ฐ์ฒด ์ฐธ์กฐ๋ฅผ ํด์ ํ๋ผ. ์๋ฐ์์๋ ๊ฐ๋น์ง ์ปฌ๋ ์ ๋๋ถ์ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ฅผ C๋ C++์ ๋นํด์๋ ํธํ๋ค๊ณ ํ ์ ์์ง๋ง ๊ทธ๋ ๋ค๊ณ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ฅผ ์์ ์ ๊ฒฝ์ฐ์ง ์์๋ ๋๋ ๊ฒ์ ์๋๋ค. ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ง์ ๊ด๋ฆฌํ๋ ํด๋์ค๊ฐ ์๋ค๋ฉด ๋ฉ๋ชจ๋ฆฌ ๋์๊ฐ ์ผ์ด๋ ์ ์๊ณ , ์ด ๋ฉ๋ชจ๋ฆฌ ๋์๋ ๊ฒ์ผ๋ก๋ ์ ๋๋ฌ๋์ง ์๊ธฐ ๋๋ฌธ์ ์์คํ ์ ์๋ ๊ฐ ์ ๋ณตํด ์๋ค๊ฐ.. ์ฌํ ๊ฒฝ์ฐ์๋ ๋์คํฌ ํ์ด์ง์ด๋ OutoutMemoryError๋ฅผ ์ผ์ผ์ผ์ ํ๋ก๊ทธ๋จ์ด ์๊ธฐ์น ์๊ฒ ์ข ๋ฃ๋ ์๋ ์๋ค.. ๊ทธ๋ฌ๋ฏ๋ก ์ด๋ค ๊ฒฝ์ฐ์ ๋ฉ๋ชจ๋ฆฌ ๋์๊ฐ ๋ฐ์ํ ์ ์์ผ๋ฉฐ, ํด๊ฒฐ? ๋ฐฉ๋ฒ์ ๋ฌด์์ธ์ง์ ๋ํด์ item07์์ ์๊ฐํ๊ณ ์๋ค. ๋ฉ๋ชจ๋ฆฌ ๋์๊ฐ ๋ฐ์ํ๋ ๊ฒฝ์ฐ ๐พ : ์ด๋ค ๊ฐ์ฒด์ ๋ํ ๋ ํผ๋ฐ์ค๊ฐ ๋จ์์๋ค๋ฉด ํด๋น ๊ฐ์ฒด๋ ๊ฐ๋น์ง ์ปฌ๋ ์ ์ ๋์์ด ๋..
2023.01.21