์ถ์ฒ
ChatGPT
๊ฐ์ฒด์ ๋ถ๋ณ์ฑ์ด ์ด๋ ์ค๋ ๋ ์์ ์ฑ๊ณผ ๊ด๋ จ๋ ๋ฌธ์ ๋ฅผ ์ค์ผ ์ ์๋ ์ด์ ๋ฅผ ๊น์ด ์๊ฒ ์ดํดํ๋ ค๋ฉด, ๋ถ๋ณ์ฑ๊ณผ ์ค๋ ๋ ์์ ์ฑ์ด ์ด๋ป๊ฒ ์ํธ์์ฉํ๋์ง๋ฅผ ์์์ผ ํ๋ค.
๋ถ๋ณ์ฑ์ด๋ ๋ฌด์์ธ๊ฐ?
๋ถ๋ณ์ฑ(Immutability)์ ๊ฐ์ฒด์ ์ํ๊ฐ ํ ๋ฒ ์ค์ ๋๋ฉด ๋ณ๊ฒฝ๋ ์ ์๋ ์ฑ์ง์ ์๋ฏธํ๋ค. ์ฆ, ๊ฐ์ฒด์ ๋ชจ๋ ํ๋๊ฐ final์ด๊ฑฐ๋ ์ฝ๊ธฐ ์ ์ฉ์ผ๋ก ์ค์ ๋์ด, ์์ฑ ํ์๋ ๊ฐ์ ๋ณ๊ฒฝํ ์ ์๊ฒ ๋ง๋๋ ๊ฒ์ด๋ค๋ค. ๋ถ๋ณ์ฑ์ ์ฌ๋ฌ ๊ฐ์ง ์ฅ์ ์ ์ ๊ณตํฉ๋๋ค:
- ์์ ํ ๊ณต์ : ๋ถ๋ณ ๊ฐ์ฒด๋ ์ฌ๋ฌ ์ค๋ ๋ ๊ฐ์ ์์ ํ๊ฒ ๊ณต์ ๋ ์ ์๋ค. ์๋ํ๋ฉด ์ด๋ค ์ค๋ ๋๋ ๊ฐ์ฒด์ ์ํ๋ฅผ ๋ณ๊ฒฝํ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
- ๋จ์ํ ์ค๊ณ : ๋ถ๋ณ์ฑ์ ๊ฐ์ฒด ์ค๊ณ๋ฅผ ๋จ์ํ๊ฒ ๋ง๋ ๋ค. ๊ฐ์ฒด ์ํ ๋ณํ๋ฅผ ์ถ์ ํ ํ์๊ฐ ์๊ธฐ ๋๋ฌธ์, ๊ฐ์ฒด ์ฌ์ฉ์๊ฐ ์ถ๊ฐ์ ์ธ ๋๊ธฐํ๋ ์ํ ๊ด๋ฆฌ ๋ก์ง์ ๊ตฌํํ ํ์๊ฐ ์๋ค.
- ์ผ๊ด์ฑ ๋ณด์ฅ : ๋ถ๋ณ ๊ฐ์ฒด๋ ์ธ์ ๋ ์ผ๊ด๋ ์ํ๋ฅผ ์ ์งํ๋ค. ์์ฑ์์์ ํ๋ฒ ์ค์ ๋ ๊ฐ๋ค์ ์ดํ์ ์ ๋๋ก ๋ณ๊ฒฝ๋์ง ์์ผ๋ฏ๋ก, ์ผ๊ด๋ ๋์์ ๋ณด์ฅํ๋ค.
๋ถ๋ณ์ฑ๊ณผ ์ค๋ ๋ ์์ ์ฑ
์ค๋ ๋ ์์ ์ฑ(Thread Safety)์ ์ฌ๋ฌ ์ค๋ ๋๊ฐ ๋์์ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํด๋ ์ํ๊ฐ ์์๋์ง ์๋๋ก ๋ณด์ฅํ๋ ์ฑ์ง์
๋๋ค. ๋ถ๋ณ์ฑ์ ์ค๋ ๋ ์์ ์ฑ์ ๋ณด์ฅํ๋ ๋ฐ ์ค์ํ ์ญํ ์ ํฉ๋๋ค.
1. ๊ฒฝํฉ ์กฐ๊ฑด ํํผ
๋ถ๋ณ ๊ฐ์ฒด๋ ์ฌ๋ฌ ์ค๋ ๋๊ฐ ๋์์ ์ ๊ทผํด๋ ๊ฒฝํฉ ์กฐ๊ฑด(Race Condition)์ ๋ฐ์์ํค์ง ์๋๋ค. ์๋ํ๋ฉด ์ํ ๋ณ๊ฒฝ์ด ์ผ์ด๋์ง ์๊ธฐ ๋๋ฌธ์ด๋ค.
2. ๋๊ธฐํ ๋ถํ์
๋ถ๋ณ ๊ฐ์ฒด๋ ์ํ ๋ณ๊ฒฝ์ ํ์ฉํ์ง ์์ผ๋ฏ๋ก, ๋๊ธฐํ(Synchronization)๊ฐ ํ์ ์๋ค. ์ด๋ ์ฑ๋ฅ์ ํฅ์์ํค๊ณ , ์ฝ๋ ๋ณต์ก์ฑ์ ์ค์ธ๋ค.
3. ์์ธก ๊ฐ๋ฅํ ์ํ
๋ถ๋ณ ๊ฐ์ฒด์ ์ํ๋ ์์ธก ๊ฐ๋ฅํ๋ฉฐ, ์ฌ์ฉ์๋ ๊ฐ์ฒด๊ฐ ํญ์ ์ผ๊ด๋ ์ํ๋ฅผ ์ ์งํ๋ค๊ณ ๋ฏฟ์ ์ ์์ต๋๋ค. ์ด๋ ์ค๋ ๋ ๊ฐ์ ๋ถ์ผ์น ๋ฌธ์ ๋ฅผ ์ค์ฌ์ค๋ค.
์ค๋ ๋ ์์ ์ฑ๊ณผ ์ฑ๋ฅ
๋ถ๋ณ์ฑ์ ํตํด ์ค๋ ๋ ์์ ์ฑ์ ํ๋ณดํ๋ฉด, ๋ค์๊ณผ ๊ฐ์ ์ฑ๋ฅ ์ด์ ์ด ์๋ค:
1. ๋ฎ์ ๋๊ธฐํ ๋น์ฉ
๋๊ธฐํ๋ฅผ ์ฌ์ฉํ์ง ์์ผ๋ฏ๋ก, ๋ถํ์ํ ์ค๋ฒํค๋๊ฐ ์ค์ด๋ ๋ค.
2. ์ฑ๋ฅ ์ต์ ํ
์ค๋ ๋ ๊ฐ ๊ฒฝ์์ด ์์ผ๋ฏ๋ก, CPU ์์์ ๋ณด๋ค ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ๋ค.
3. ๊ฐ๋ ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ
์ฝ๋๊ฐ ๊ฐ๋จํ๊ณ ๋ช
ํํด์ ธ, ๊ฐ๋
์ฑ๊ณผ ์ ์ง๋ณด์์ฑ์ด ํฅ์๋๋ค.
๊ฒฐ๋ก
DI์ ์์ฑ์ ์ฃผ์
์ ๊ฐ์ฒด๋ฅผ ๋ถ๋ณ์ผ๋ก ์ค๊ณํ๋ ๋ฐ ํฐ ๋์์ ์ค๋ค. ๋ถ๋ณ ๊ฐ์ฒด๋ ์ค๋ ๋ ๊ฐ ์์ ํ๊ฒ ๊ณต์ ๋ ์ ์๊ณ , ์ํ ๋ณ๊ฒฝ์ผ๋ก ์ธํ ๋ณต์ก์ฑ์ ์ค์ด๋ฉฐ, ์ฑ๋ฅ์ ํฅ์์ํจ๋ค. ์ด๋ฌํ ์ด์ ๋ก ์์ฑ์ ์ฃผ์
์ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์์ ๋ง์ด ์ ํธ๋๋ ์ค๊ณ ํจํด ์ค ํ๋์ด๋ค.
์ด๋ฅผ ํตํด ์์คํ
์ ์์ ์ฑ์ ๋์ด๊ณ , ์ฝ๋์ ์ ์ง๋ณด์์ฑ์ ํฅ์์ํฌ ์ ์๋ค. ์ด๋ฌํ ์์น์ ํนํ ๋๊ท๋ชจ ์ ํ๋ฆฌ์ผ์ด์
์์ ์ฌ๋ฌ ๊ฐ๋ฐ์๊ฐ ๋์์ ์์
ํ ๋, ์ฝ๋์ ์ผ๊ด์ฑ๊ณผ ์ ๋ขฐ์ฑ์ ๋ณด์ฅํ๋ ๋ฐ ์ค์ํ๋ค.