์๊ฐ
Java ์ค๋ ๋์ ๋ํด ์์๋ณด๊ธฐ ์ ์ ๊ฐ๊น์ด ๋ฏธ๋๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ์ด๋ ฅ์๋ฅผ ์ ์ถํ๊ณ ์ธํฐ๋ทฐ๋ฅผ ํ๋ค๊ณ ๊ฐ์ ํด ๋ณด์ธ์. ๋น์ ๊ณผ ์์ญ ๋ช
์ ๋ฏธ๋ ๋๋ฃ๋ค์ด ๋๊ท๋ชจ ์ํํธ์จ์ด ํ์ฌ์์ ์ผํ๋๋ก ์ด๋๋์์ต๋๋ค. ๋ค๋ฅธ ๋ฒ๊ฑฐ๋ก์ ์ค์์๋ ํผ๊ณคํ HR ์ง์์๊ฒ ๊ณ ์ฉ์ ์ํด ์ข
์ด ๋ฌธ์๋ฅผ ์ ์ถํด์ผ ํฉ๋๋ค.
ํ๋ก์ธ์ค ์๋๋ฅผ ๋์ด๊ธฐ ์ํด ํด๋น ์ง์์ ๋ํ ์ง์์๋ฅผ ๋ ๊ทธ๋ฃน์ผ๋ก ๋๋๊ณ ๋ ๋ช
์ HR ๊ด๋ฆฌ์(ํ์ฌ์ ์๋ ๊ฒฝ์ฐ)์๊ฒ ๋ฐฐํฌํ ์ ์์ต๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก ๋ณ๋ ฌ
์ค๊ณ ์์
์ผ๋ก ์ธํด ํ๋ก์ธ์ค ์๋๊ฐ ๋นจ๋ผ์ง๋๋ค.
ํ์ฌ์ ์ธ์ฌ ๋ด๋น์๊ฐ ํ ๋ช
๋ฟ์ด๋ผ๋ฉด ์ด๋ป๊ฒ ๋ ๋๊ฐ์ผ ํ ๊ฒ์
๋๋ค. ์๋ฅผ ๋ค์ด, ๋ชจ๋ ์ฌ๋์ ๋ค์ ๋ ๊ทธ๋ฃน์ผ๋ก ๋๋ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ์๋
์ ์๋
์ ์ฐจ๋ก๋ก ์ธํฐ๋ทฐํ ์ ์์ต๋๋ค.
๋๋ ๋ค๋ฅธ ์์น์ ๋ฐ๋ฅด๋ฉด ํ์ ๊ทธ๋ฃน์ ๋ ๋ง์ ์ฌ๋์ด ์์ผ๋ฏ๋ก ์๋
ํ ๋ช
์ ์๋
๋ ๋ช
์ ๋ฒ๊ฐ์ ๊ฐ๋ฉฐ ์ฌ์ฉํฉ๋๋ค.
์ด๋ฌํ ์์
๊ตฌ์ฑ ๋ฐฉ์์
๋ฉํฐ์ค๋ ๋ ๋ผ๊ณ ํฉ๋๋ค . ํผ๊ณคํ HR ๋ด๋น์๋ ๋ค๋ฅธ ๊ทธ๋ฃน์ผ๋ก ์ ํํ์ฌ ๋ค์ ์ง์์ ์ฑ์ฉํฉ๋๋ค. ์๋ง๋ 11๊ฐ์ ๊ทธ๋ฃน๊ณผ 4๋ช
์ ์ธ์ฌ๋ด๋น๊ด์ด ์์ ๊ฒ์
๋๋ค. ์ด ๊ฒฝ์ฐ ๋ฉํฐ์ค๋ ๋ฉ
์ฒ๋ฆฌ๋ ์ฌ๋ฌ HR์ ์ํด ๋ณ๋ ฌ๋ก ๋ฐ์ํ๋ฉฐ, HR์ ๋ชจ๋ ๊ทธ๋ฃน์ ๋ค์ ์ฌ๋์ ๋ฐ๋ ค์ ๋ฌธ์๋ฅผ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
ํ๋ก์ธ์ค
์ด ๊ฒฝ์ฐ์ ํ๋ก์ธ์ค(
ํ๋ก์ธ์ค )๋ ๋ฌธ์ ์ ์ ์
๋ฌด์ ์ ๋ฆฌ๊ฐ ๋ฉ๋๋ค. ์กฐ์ง์์๋ ํ๊ณ, ์ํํธ์จ์ด ๊ฐ๋ฐ, ๊ณ ๊ฐ๊ณผ์ ํ์, ์ฐฝ๊ณ ์ด์ ๋ฑ ์ฌ๋ฌ ํ๋ก์ธ์ค๋ฅผ ๊ตฌ๋ถํ ์ ์์ต๋๋ค. ๊ฐ ํ๋ก์ธ์ค์ ๋ฆฌ์์ค๊ฐ ํ ๋น๋ฉ๋๋ค(์ฌ๋ฌด์ค, ์คํ์ ์ํ ์ง์). ํ๋ก์ธ์ค๋ ์๋ก ๊ฒฉ๋ฆฌ๋์ด ์์ต๋๋ค. HR ๋ด๋น์๋ ํ๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ก์ธ์คํ ์ ์์ผ๋ฉฐ ๊ณ ๊ฐ ์๋น์ค ๊ด๋ฆฌ์๋ ์ฐฝ๊ณ ๋ฅผ ๋์๋ค๋์ง ์์ต๋๋ค. ํ๋ก์ธ์ค๊ฐ ๋ค๋ฅธ ์ฌ๋์ ๋ฆฌ์์ค์ ์ก์ธ์คํด์ผ ํ๋ ๊ฒฝ์ฐ ๋ฉ๋ชจ, ๊ณต๋ ํ์ ๋ฑ ํ๋ก์ธ์ค ๊ฐ ํต์ ์ ๊ตฌ์ถํด์ผ ํฉ๋๋ค.
์คํธ๋ฆผ
ํ๋ก์ธ์ค์ ์์
์ ์ค๋ ๋(
java thread
)๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. HR ๋ถ์์ ๊ฒฝ์ฐ ํ๋ฆ์ ๊ทธ๋ฃน์ ๋ด์ฌํ๊ธฐ ์ํ ์
๋ฌด ์กฐ์ง์
๋๋ค. ์ฒซ ๋ฒ์งธ ๊ทธ๋ฆผ์๋ ํ๋์ ํ๋ฆ์ด ์๊ณ ๋ค์ ์ธ ๊ฐ์๋ ๋ ๊ฐ์ ํ๋ฆ์ด ์์ต๋๋ค. ํ๋ก์ธ์ค ๋ด์์ ์ค๋ ๋๋ ๋ณ๋ ฌ๋ก ์คํ๋ ์ ์์ต๋๋ค. ๋ ๋ช
์ HR ๋ด๋น์๊ฐ ๋ ๊ฐ ์ด์์ ๋ฏธ๋ ์ง์ ๊ทธ๋ฃน์ ์์ฉํฉ๋๋ค. ์ธ์ฌ ๋ด๋น์์ ๊ทธ๋ฃน์ ์ํธ ์์ฉ(ํ๋ก์ธ์ค ๋ด ์ค๋ ๋ ์ฒ๋ฆฌ)์
์ค๋ ๋ ๋๊ธฐํ ๋ผ๊ณ ํฉ๋๋ค . ํ ๋ช
์ ์ธ์ฌ ๋ด๋น์๊ฐ ๋ ๊ทธ๋ฃน์ ๋์์ธํ ๊ทธ๋ฆผ์ ์ ๋ํผ(์๋
-์๋
-์๋
-์๋
)๊ณผ ์๋ก ๋ค๋ฅธ ์ฐ์ ์์(๋ ์๋
๊ฐ ํ ์๋
์ผ๋ก ๋ฒ๊ฐ์ ๊ฐ๋ฉฐ) ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ค๋๋ค. ์ค๋ ๋๋ ์์ ์ด ์ํ ํ๋ก์ธ์ค์ ๋ฆฌ์์ค์ ์ก์ธ์คํ ์ ์์ต๋๋ค. HR ๋ด๋น์ ๊ทธ๋ฃน์๋ ์ ์ฒญ์ ์ํ, ๋ฌธ์ ์์ฑ์ฉ ํ์ด ์ ๊ณต๋ฉ๋๋ค. ๊ทธ๋ฌ๋ ํ๋ฆ์ด ๊ณตํต์ ์ธ ๊ฒ๊ณผ ์ํธ ์์ฉํ๋ฉด ์ฌ๊ณ ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. ์ธ์ฌ ๋ด๋น๊ด์ด ์ค์ ๋ง์ง๋ง ์ฌ๋์ ์ด๋ฆ์ ์ธ์น๋ผ๊ณ ํ๋ฉด ๋ ๊ทธ๋ฃน์ ๊ฒฝ์ฐ ์ฌ์ ์ด๋ฆ์ ๋ฃ๊ฒ ๋ ์ง ๋จ์ ์ด๋ฆ์ ๋ฃ๊ฒ ๋ ์ง ๋ฏธ๋ฆฌ ํ์ ํ ์ ์์ต๋๋ค. ์ด๋ฌํ ๋ฐ์ดํฐ ์ก์ธ์ค ์ถฉ๋, ์ฐจ๋จ ๋ฐ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋งค์ฐ ์ค์ํ ์ฃผ์ ์
๋๋ค.
ํ๋ฆ ์ํ
๊ฐ ์ค๋ ๋๋ ๋ค์ ์ํ ์ค ํ๋์ ์์ต๋๋ค.
- ์์ฑ๋จ(
New
) โ HR ๋ด๋น์ ๋ผ์ธ์ด ์ค๋น ์ค์ด๊ณ ์ฌ๋๋ค์ด ์ ๋ฆฌ๋๊ณ ์์ต๋๋ค.
- ์์๋จ(
Runnable
) โ HR ๋ด๋น์๋ฅผ ์ํด ๋๊ธฐ์ด์ด ์ค์ ์ฐ๊ณ ์ฒ๋ฆฌ ์ค์
๋๋ค.
- ์ฐจ๋จ๋จ(
Blocked
) โ ๋๊ธฐ์ด์ ๋ง์ง๋ง ๋จ์๊ฐ ์ด๋ฆ์ ์ธ์น๋ ค ํ์ง๋ง, ๋ค์ ๊ทธ๋ฃน์ ์ฌ์๊ฐ ์์ ๋ณด๋ค ๋จผ์ ์ด๋ฆ์ ์ธ์น๊ธฐ ์์ํ๋ค๋ ์์์ ๋ฃ๊ณ ๊ทธ๋ ์นจ๋ฌตํ์ต๋๋ค.
- ์๋ฃ๋จ(
Terminated
) - HR ๋ด๋น์๊ฐ ์ ์ฒด ๋๊ธฐ์ด์ ์๋ฃํ์ผ๋ฉฐ ๋ ์ด์ ํ์ํ์ง ์์ต๋๋ค.
- Waiting(
Waiting
) - ํ ํ๊ฐ ๋ค๋ฅธ ํ์ ์ ํธ๋ฅผ ๊ธฐ๋ค๋ฆฌ๊ณ ์์ต๋๋ค.
์ค๋ ๋์ ๊ตฌ์ฑ๊ณผ ์ํธ ์์ฉ์ ํ๋ก์ธ์ค์ ํจ๊ณผ์ ์ธ ์ด์์ ์ํ ๊ธฐ์ด์
๋๋ค.
IT ์ธ๊ณ๋ก ๋์๊ฐ์
21์ธ๊ธฐ์๋ ๋ฉํฐ์ค๋ ๋์ ๋ณ๋ ฌ ์คํ์ด ์ค์ํด์ก์ต๋๋ค. ์ง๋ ์ธ๊ธฐ 90๋
๋๋ถํฐ ๋ฉํฐํ์คํน ์ด์ ์ฒด์ ์ธ Windows, MacOS ๋ฐ Linux๊ฐ ๊ฐ์ ์ฉ ์ปดํจํฐ์ ํ๊ณ ํ๊ฒ ์๋ฆฌ ์ก์์ต๋๋ค. 4๊ฐ ์ด์์ ์ฝ์ด ํ๋ก์ธ์๋ฅผ ์ฐพ์ ์ ์๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. GPU ๋น๋์ค ์นด๋์ ๋ณ๋ ฌ ๋ธ๋ก ์๋ ์ด๋ฏธ 1,000๊ฐ๋ฅผ ์ด๊ณผํ์ต๋๋ค. ์ธ๊ธฐ ์๋ ํ๋ก๊ทธ๋จ์ ๋ฉํฐ์ค๋ ๋ฉ(๋ฉํฐ์ค๋ ๋ฉ)์ ๊ณ ๋ คํ์ฌ ์์ฑ๋์์ต๋๋ค(์: Adobe Photoshop, WinRar, Mathematica, ์ต์ ๊ฒ์ ๋ฑ ๊ทธ๋ํฝ, ๋น๋์ค ์ฒ๋ฆฌ ๋๋ ๋์ฉ๋ ๋ฐ์ดํฐ ์์
์ ์ํ ์ต์ ๋ฒ์ ์ ์ํํธ์จ์ด). Java ๋ฉํฐ์ค๋ ๋ฉ์ ๋งค์ฐ ์ค์ํ๊ณ ๋์ค์ ์ด๋ฉฐ ๋ณต์กํ ์ฃผ์ ์
๋๋ค. ๋ฐ๋ผ์ JavaRush ๊ณผ์ ์๋ ์ด๋ฅผ ์ ์ดํดํ๊ธฐ ์ํ ๋ง์ ์์
์ด ์์ต๋๋ค. ๋ฉํฐ์ค๋ ๋ฉ์ ๋ํ Java ์์ ๋ ์ด ์์ญ์ ๊ธฐ๋ณธ์ ์ธ ๋์์ค์ ๋ฏธ๋ฌํจ์ ์ตํ๊ณ ์ค๋ ๋ ์์
์ ๋๊ธฐํํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
ํ๋ก์ธ์ค
ํ๋ก์ธ์ค ๋ ์ด์ ์ฒด์ (OS)๊ฐ ๋ฉ๋ชจ๋ฆฌ, ํ๋ก์ธ์ ์๊ฐ/์ฝ์ด ๋ฐ ๊ธฐํ ๋ฆฌ์์ค๋ฅผ ํ ๋นํ ์คํ ์ค์ธ ํ๋ก๊ทธ๋จ ์ธ์คํด์ค์
๋๋ค. ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ณ๋๋ก ํ ๋นํ๋ ๊ฒ์ด ์ค์ํ๋ฉฐ, ์๋ก ๋ค๋ฅธ ํ๋ก์ธ์ค์ ์ฃผ์ ๊ณต๊ฐ์ ์๋ก ์ก์ธ์คํ ์ ์์ต๋๋ค. ํ๋ก์ธ์ค๊ฐ ํต์ ํด์ผ ํ๋ ๊ฒฝ์ฐ ํ์ผ, ํ์ดํ ๋ฐ ๊ธฐํ ํ๋ก์ธ์ค ๊ฐ ํต์ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ์ฌ ํต์ ํ ์ ์์ต๋๋ค.
ํ๋ฆ
์๋ฐ
Thread
(์คํธ๋ฆผ).
Stream
๋๋ก๋ ๋ค๋ฅธ Java ํด๋์ค ๋ฑ๊ณผ ์ ํผ๋์ ํผํ๊ธฐ ์ํด Java ์ค๋ ๋๋ฅผ ์ค๋ ๋๋ก ๋ฒ์ญํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ์ด๋ ํ๋ก์ธ์ค์ ํ ๋น๋ ๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํ๋ฉฐ ํ๋ก์ธ์ค๊ฐ ์คํ๋๋ ๋ฐฉ์์
๋๋ค. ๋ฉ์ธ ์ค๋ ๋๋ ๋ฉ์๋๋ฅผ ์คํ
main
ํ๊ณ ์ข
๋ฃํฉ๋๋ค. ํ๋ก์ธ์ค๊ฐ ์คํ๋๋ฉด ์ถ๊ฐ ์ค๋ ๋(์์ ์ค๋ ๋)๊ฐ ์์ฑ๋ ์ ์์ต๋๋ค. ๋์ผํ ํ๋ก์ธ์ค์ ์ค๋ ๋๋ ์๋ก ๋ฐ์ดํฐ๋ฅผ ๊ตํํ ์ ์์ต๋๋ค. Java ๋ฉํฐ์ค๋ ๋ฉ์ ์ฌ์ฉํ๋ ค๋ฉด ๋ฐ์ดํฐ ๋๊ธฐํ๋ฅผ ๊ณ ๋ คํด์ผ ํฉ๋๋ค. ์ด๋ฅผ ์์ง ๋ง์ญ์์ค. Java์์๋ ๋ง์ง๋ง ์ค๋ ๋๊ฐ ์๋ฃ๋๋ฉด ํ๋ก์ธ์ค๊ฐ ์ข
๋ฃ๋ฉ๋๋ค. ๋ฐฑ๊ทธ๋ผ์ด๋ ์์
์ ๊ฒฝ์ฐ ์ค๋ ๋๋ ๋ฐ๋ชฌ( )์ผ๋ก ์์๋ ์ ์์ผ๋ฉฐ ์ผ๋ฐ ์ค๋ ๋์์ ์ฐจ์ด์ ์ ํ๋ก์ธ์ค์ ์ค๋ ๋
daemon
๊ฐ ์๋ ๋ชจ๋ ํ๋ก์ธ์ค๊ฐ ์ข
๋ฃ๋ ๋ ๊ฐ์ ๋ก ์ข
๋ฃ๋๋ค๋ ์ ์
๋๋ค .
daemon
์ต์ด์ ๋ฉํฐ์ค๋ ๋ ์ ํ๋ฆฌ์ผ์ด์
์ค๋ ๋๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ์ 6๊ฐ์ง๊ฐ ๋์ต๋๋ค. JavaRush ๊ณผ์ ์์ ์ด์ ๋ํด ์์ธํ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ๋จผ์ ๊ธฐ๋ณธ ์ฌํญ ์ค ํ๋์ ๋ํด ์์ ๋ณด๊ฒ ์ต๋๋ค. ํ๋ก๊ทธ๋จ ๋ก์ง์ ๊ตฌํํ๋ ์ฝ๋๋ฅผ ์์ฑํ๋ ๋ฐ ํ์ํ
Thread
๋ฉ์๋์๋ ํน์ ํด๋์ค๊ฐ ์์ต๋๋ค .
run()
์ค๋ ๋๋ฅผ ์์ฑํ ํ ๋ฅผ ํธ์ถํ์ฌ ์์ํ ์ ์์ต๋๋ค
start()
. Java ๋ฉํฐ์ค๋ ๋ฉ์ ์๋ฅผ ๊ตฌํํ๋ ๋ฐ๋ชจ ํ๋ก๊ทธ๋จ์ ์์ฑํด ๋ณด๊ฒ ์ต๋๋ค.
class PeopleQueue extends Thread {
private String[] names;
PeopleQueue(String... names) {
this.names = names;
}
@Override
public void run() {
for (int i = 0; i < names.length; i++) {
System.out.println("ะะฑัะฐะฑะพัะฐะฝั documentั: " + names[i]);
try {
sleep(500);
} catch (Exception e) {}
}
}
}
public class HR {
public static void main(String[] args) {
PeopleQueue queue1 = new PeopleQueue("Ivan","ะกะตัะณะตะน","ะะธะบะพะปะฐะน","ะคะตัะดะธะฝะฐะฝะด","Basil");
PeopleQueue queue2 = new PeopleQueue("ะะฐัะธั","ะัะดะผะธะปะฐ","ะะปะธัะฐ","ะะฐัะธะฝะฐ","Olga");
System.out.println("ะะฐัะฐะปะธ!");
queue1.start();
queue2.start();
}
}
ํ๋ก๊ทธ๋จ์ ์คํํด ๋ณด๊ฒ ์ต๋๋ค. ์ฝ์์๋ ๊ธฐ๋ณธ ์ค๋ ๋์ ๋ฉ์์ง ์ถ๋ ฅ์ด ํ์๋ฉ๋๋ค. ๋ค์์ผ๋ก, ๊ฐ ํ์ ์ค๋ ๋๋
queue1
๋ค์
queue2
์ผ๋ก ์ฒ๋ฆฌ๋๋ ์ง์์ ๋ํ ๋ฉ์์ง๋ฅผ ๊ณตํต ์ฝ์์ ์ถ๋ ฅํฉ๋๋ค. ํ๋ก๊ทธ๋จ์ ๊ฐ๋ฅํ ์ต์
์ค ํ๋:
ะะฐัะฐะปะธ!
ะะฑัะฐะฑะพัะฐะฝั documentั: ะะฐัะธั
ะะฑัะฐะฑะพัะฐะฝั documentั: Ivan
ะะฑัะฐะฑะพัะฐะฝั documentั: ะัะดะผะธะปะฐ
ะะฑัะฐะฑะพัะฐะฝั documentั: ะกะตัะณะตะน
ะะฑัะฐะฑะพัะฐะฝั documentั: ะะปะธัะฐ
ะะฑัะฐะฑะพัะฐะฝั documentั: ะะธะบะพะปะฐะน
ะะฑัะฐะฑะพัะฐะฝั documentั: ะะฐัะธะฝะฐ
ะะฑัะฐะฑะพัะฐะฝั documentั: ะคะตัะดะธะฝะฐะฝะด
ะะฑัะฐะฑะพัะฐะฝั documentั: ะะปัะณะฐ
ะะฑัะฐะฑะพัะฐะฝั documentั: ะะฐัorะน
Process finished with exit code 0
Java์ ๋ฉํฐ์ค๋ ๋ฉ์ ๋ณต์กํ๊ณ ๋ค๋ฉด์ ์ธ ์ฃผ์ ์
๋๋ค. ๋ณ๋ ฌ, ๋ฉํฐํ์คํน ๋ฐ ๋ฉํฐ์ค๋ ๋ ์ปดํจํ
์ ์ฌ์ฉํ์ฌ ์ฝ๋๋ฅผ ์์ฑํ๋ ๊ธฐ๋ฅ์ ์ต์ ๋ฉํฐ ์ฝ์ด ํ๋ก์ธ์ ๋ฐ ์ฌ๋ฌ ์ปดํจํฐ๋ก ๊ตฌ์ฑ๋ ํด๋ฌ์คํฐ์์ ์์
์ ํจ๊ณผ์ ์ผ๋ก ๊ตฌํํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
GO TO FULL VERSION