์๋ฐ๋ฅผ ์ฒ์ ๊ณต๋ถํ๊ฒ ๋๋ฉด, ๋ง์ง๋ง ์ฆ์์ ๋ฐฐ์ฐ๊ฒ ๋๋ Thread๋ผ๋ ๊ฐ๋ ์ด ์๋ค.
์ทจ์ ์ ํ๊ณ , ์ค๋ฌด์์ spring, spring boot๋ฅผ ๋ค๋ฃจ๋ฉฐ ์ง์ ์ ์ผ๋ก Thread๋ผ๋ ์ฝ๋ ๋ณธ ๊ฒ์ ์ฝ,, 1-2๋ฒ? ์ด์๋ ๊ฒ์ด์๋ค.
๋ถ๋ช ์๋ฐ ๋ฐฐ์ธ ๋ ๋ฐฐ์ ๋ ๊ฐ๋ ์ธ๋ฐ
์ค๋ฌด์์๋ ๋ณ๋ก ์ค์ํ์ง ์์๊ฒ์ธ๊ฐ? ํ๋
-
์ด์ํ ํธ๊ธฐ์ฌ์ด ์๊ฒผ๋ค.
Thread? ๊ทธ๊ฑฐ ์ ์?
์๋ฐ์์ ์ฌ๋ฌ๊ฐ์ง ์ผ์ ๋์์ ์ฒ๋ฆฌํ๊ธฐ ์ํด ์ฌ์ฉํ๋ค.
์ ๋ ๋ฉํฐ๊ฐ ์๋๋ ์ฌ๋์ด๋ผ... ํ ๋ฒ์ ํ๊ฐ์ง ์ผ ๋ฐ์ ๋ชปํ์ง๋ง,...
์ปดํจํฐ๋ ๋๋ํ๋๊น ํ ๋ฒ์ ์ฌ๋ฌ๊ฐ์ง ์ผ์ ํ๋ฉด ๋น์ฐํ ํจ์จ์ ์ด์์์? โ โฟโ
๋ค์ด๊ฐ๊ธฐ ์ ์...
Thread๋ฅผ ์์๋ณด๊ธฐ ์ ์ ๊ผญ ์์์ผ ๋ ์ Thread๋ฅผ ์ดํดํ ์ ์๋ Process๋ฅผ ๋จผ์ ์๊ณ ๊ฐ์๋ค.แ.แ
ํ๋ก์ธ์ค
๋ค๋ค ์ปดํจํฐํ๋ฉด์ ์์ ๊ด๋ฆฌ์ ์ด์ด์ ์ ๋๋ฆฐ์ง ํ์ธํ ์ ์๋์?
ํ๋ก์ธ์ค๋ ๋ฐ๋ก ์ง๊ธ ์ด ์ปดํจํฐ CPU์ ์ฌ๋ผ๊ฐ ์๋(= ์คํ ์ค์ธ ํ๋ก๊ทธ๋จ)์ ๋งํฉ๋๋ค.
์ปดํจํฐ๋ ๊ฐ๊ฐ ์์ ๋ง์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ํฌํจํ ๋ ๋ฆฝ์ ์ธ ์คํํ๊ฒฝ์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
์ฌ๋๋ ๋ด ๋ฐฉ ์์์ ๋ ๋ฆฝ์ ์ผ๋ก ๊ณต๊ฐ๋ถ๋ฆฌ๋ฅผ ํด์ ์ฌ์ฉํ์ฃ ? ๊ทธ๊ฑฐ๋ ๋๊ฐ์ ๊ฒ๋๋ค. ์ปดํจํฐ๋ ์๋ฃธ์์ ๊ฐ๊ฐ ๊ณต๊ฐ๋ง๋ค ๋ ๋ฆฝ์ ์ผ๋ก ์คํํ๊ฒฝ์ ๋๋๋ค๊ณ ์๊ฐํ๋ฉด ๐๐ป
Thread๋ JVM(๊ฐ์๋จธ์ ์ธ๋ฐ ๋ชจ๋ฅด๋ฉด ์ด ์ ๋๋ ์ฐพ์๋ณด๊ธฐเท)์ ์ํด ๊ด๋ฆฌ๋๋ค.แ.แ
Thread๋
- ์ ํ๋ฆฌ์ผ์ด์ ์ฝ๋๋ฅผ ํ๋์ฉ ์์ฐจ์ ์ผ๋ก ์คํํ๋ ๊ฒ
- ์๋ฐ ์ดํ๋ฆฌ์ผ์ด์ main()์ ์คํํ๊ฒ ๋๋ฉด main()์ด ๋์ํ๋ ๊ฒ
- Thread ์์ด๋ ์๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋์ํ ์ ์์
- Thread๋ ํ ๋ฒ์ ํ๋์ ์ฝ๋๋ผ์ธ๋ง ์ํํ ์ ์์
์ธ์์ ์ ์๋ public static void main( )
์ค์ต์ ํ๋ฉด์ ์ด์ ๋ ๋ชจ๋ฅด๊ณ ๊ทธ๋ฅ ์ธ์ ๋ค..
main( )์ด ๊ผญ ์์ด์ผ ํ๋ค๋๊น..๊ทธ๋ฅ ๊ทธ๋ฐ ์ค๋ก๋ง ์ดํดํ๋ค...
์๋ฐ ์ดํ๋ฆฌ์ผ์ด์ ์ ์คํํ๋ฉด main() ์ค๋ ๋๊ฐ ์๋์ผ๋ก ์์๋๋ค. ์โธโฆฬโโธสทสฐสธหฬฃหฬฃหฬฃ ๊ทธ๋ด๊น..?
(Thread๋ฅผ ์ดํดํ๊ธฐ ์ํด ์ฌํํ๊ฒ ์๊ฐํ๋ฉด)
ํ๋ก์ธ์ค์๋ ์ ์ด๋ ํ ๊ฐ ์ด์์ Thread๊ฐ ์กด์ฌํด์ผ ํ๊ธฐ ๋๋ฌธ์ด๋ค.
์๋ฐ๋ ์ผ๋จ, Main ์ค๋ ๋ ํ๋๋ก ์์ํ์ฌ ๊ฐ๋ฐ์๊ฐ ์ค๋ ๋๋ฅผ ์ถ๊ฐ๋ก ์์ฑํ๊ฒ ๋๋ฉด ๋ฉํฐ ์ค๋ ๋ ํ๊ฒฝ์ด ๋ฉ๋๋ค.
์ด์ ํจ์จ์ ์ผ๋ก ํ๋ก์ธ์ค๋ค์ ์ฒ๋ฆฌํ๊ฒ ๋ค ์ด๋ง์ ๋๋ค~
๊ทธ๋ผ, Thread๋ฅผ ๊ณ์ ๋ง๋ค์ด์ ๋์์ 1000, 100000๊ฐ๊ฐ ๋์๊ฐ๊ฒ ํ๋ฉด ๋๋ ๊ฝค ๊ธฐํนํ ๊ฐ๋ฐ์๊ฒ ์ง? ๐ค
๋ฐ๋ก ๋ฑ์ง ์ค๋งค์ โ โฟโ ;;...
Thread ๋ฑ์ง ์ค๋งค์ ์ ๋ง๋ ๋ฒ
- ์ค๋ ๋๋ ํ๋ก์ธ์ค์ ๋ฆฌ์์ค๋ฅผ ๊ณต์ ํ๊ธฐ ๋๋ฌธ์ ํจ์จ์ ์ด์ง๋ง, ์ ์ฌ์ ์ธ ๋ฌธ์ ์ ์ ๋ ธ์ถ๋๋ค.
- ์ค๋ ๋์ ์์ฑ๋น์ฉ์ ๋งค์ฐ๋งค์ฐ๋งค์ฐ ๋น์ธ๋ค.. ๋น์ธ๋ค Expensive..
- ๊ณ ๊ฐ์ ์์ฒญ์ด ์ฌ ๋๋ง๋ค ์ค๋ ๋๊ฐ ์์ฑ๋๋ค๋ฉด response ์๋ต ์๋๋ ์ ํ๋๋ค.
- Context switching ๋น์ฉ๋ ๋ฐ์๋๋ค.
- ์์ฑ์ ์ ํ์ด ์๋ค(......)
- ๊ณ ๊ฐ์ ์์ฒญ์ด ๋๋ฌด ๋ง์ผ๋ฉด CPU๋ ๋ฉ๋ชจ๋ฆฌ ์๊ณ์ ์ ๋๊ฒจ ์๋ฒ๊ฐ ์ฃฝ์ ์ ์๋ค๐
์ด ๋ด์ฉ๋ค์ ๋ฐ๋์ ์๊ณ Thread๋ฅผ ์จ์ผ ๋ฑ์ง ์ค๋งค์๋ฅผ ํผํ ์ ์๋ค.
๊ฐ์๊ธฐ ์ด๊ฑฐ๋ณด๊ณ ์ค๋ ๋ ์ ์ด๋ค๋ ์ฌ๋ ์์๊น๋ด ์ฅ์ ๋ ์๊ฐํ๊ฒ ๋ค.
๊ทธ๋ผ์๋ ๋ถ๊ตฌํ๊ณ Thread๋ฅผ ์ฌ์ฉํ๋ ์ด์
- ๋์ ์์ฒญ์ ์ฒ๋ฆฌํ ์ ์๋ค.
๋ง์ ์ฌ์ฉ์๋ค์ด ๊ฐ์ ์์ฒญํ๋๋ฐ ํ ๋ฒ์ ํ๊ฐ๋ง ์ฒ๋ฆฌํ๋ฉด ๋๋จธ์ง๋ ๊ณ~~์ ๋๊ธฐํด์ผํ๋ค. ์ฑ์ง๊ธํ ํ๊ตญ์ฌ๋์ ์ ๋ ๋ชป๊ธฐ๋ค๋ฆฐ๋ค. - ๋ฆฌ์์ค๊ฐ ํ์ฉํ๋ ํ ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํ๋ค.
์ฐ๋ฆฌ์๊ฒ CPU์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์๋ค. ์ด ์์ฒญ๋ ์น๊ตฌ๋ค์ด ํ์ฉํ๋ ๋ฒ์์์ ์ฒ๋ฆฌํ ์ ์๋ค๋ ๊ฑด ๊ต์ฅํ ๊ฒ์ด๋ค. - ํ๋๊ฐ ์ง์ฐ๋์ด๋ ์ ์๊ฒ๋ ์์ง 2๊ฐ์ ์ค๋ ๋๊ฐ ๋จ์์์ต๋๋ค๐
์์ ์ค ํ๋์ Thread๊ฐ ์ง์ฐ๋๋ค๋ฉด ๋๋จธ์ง๋ ์ ์ ๋์ํ๋ค. ๋ฐ๋ผ์ ์ํฅ์ ์๋ฐ์ผ๋๊น ๋ด ํ ์ผ์ ์ ํ ์ ์๋ค. - Thread Pool๊ณผ ํจ๊ป๋ผ๋ฉด ์คํ๋ ค ์ข์.
๋ด๋ถ์ Thread Pool์ ๋์ด ๋ณด๊ดํ๊ณ ๊ด๋ฆฌํ๋ฉฐ, ๋ฌด์๋ณด๋ค ์ด ์์ฑ ๊ฐ์๋ฅผ ์ ํํ ์ ์๋ค. ๋ํ ๋๊ธฐ, ๊ฑฐ์ ์ ํตํด WAS์ ๋ถํ๋ฅผ ์ค์ผ ์ ์๋ค.
์ค๋ฌด์์ Thread Pool
WAS์ ์ฃผ์ ํ๋ ํฌ์ธํธ, ์ต๋ ์ค๋ ๋ ์
๊ฐ์ ๋ฎ๊ฒ ์ค์ ํ์๋, ๋์ ์์ฒญ์ด ๋ง์์ง๋ค๋ฉด?
์๋ฒ ๋ฆฌ์์ค๋ ์ฌ์ ๋กญ์ง๋ง ํด๋ผ์ด์ธํธ ์๋ต์ ์ง์ฐ์ด ๋ฐ์ ํ ์ ์๋ค.
๊ฐ์ ๋๊ฒ ์ค์ ํ์ ๋, ๋์ ์์ฒญ์ด ๋ง์์ง๋ค๋ฉด?
CPU, ๋ฉ๋ชจ๋ฆฌ ๋ฆฌ์์ค ์๊ณ์ ์ด๊ณผ๋ก ์๋ฒ๊ฐ ๋ค์ด๋๋ค.
Thread์ ์ ๋นํ ๊ฐ์๋ ๋ช ๊ฐ ๊ฐ์?
- ์ ํ๋ฆฌ์ผ์ด์ ๋ก์ง์ ๋ณต์ก๋, CPU, ๋ฉ๋ชจ๋ฆฌ ๋ฆฌ์์ค ์ํฉ ๋ฑ ์ฌ๋ฌ๊ฐ์ง๋ฅผ ๊ณ ๋ คํด์ผ ํ๋ค.
- ์ฑ๋ฅ ํ ์คํธ๋ฅผ ํตํด ํ์ธํด๋ณด์ธ์.
- ์ต๋ํ ์ค์ ์๋น์ค์ฒ๋ผ ์ ์ฌํ๊ฒ ๊ณ ๊ฐ์ ์์ฒญ๋ ๋ง์ด๋ณด๋ด๊ณ ํด์ ํ ์คํธ ํด๋ณด์ธ์.
- ์ํ์น DB, ์ ์ด๋ฏธํฐ, nGrinder ์ฌ์ฉํ์๋ฉด ๋ฉ๋๋ค.
๋.