JavaRush /Java Blog /Random-KO /Java์˜ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ

Java์˜ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ

Random-KO ๊ทธ๋ฃน์— ๊ฒŒ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค

์†Œ๊ฐœ

Java ์Šค๋ ˆ๋“œ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ธฐ ์ „์— ๊ฐ€๊นŒ์šด ๋ฏธ๋ž˜๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด๋ ฅ์„œ๋ฅผ ์ œ์ถœํ•˜๊ณ  ์ธํ„ฐ๋ทฐ๋ฅผ ํ–ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด์„ธ์š”. ๋‹น์‹ ๊ณผ ์ˆ˜์‹ญ ๋ช…์˜ ๋ฏธ๋ž˜ ๋™๋ฃŒ๋“ค์ด ๋Œ€๊ทœ๋ชจ ์†Œํ”„ํŠธ์›จ์–ด ํšŒ์‚ฌ์—์„œ ์ผํ•˜๋„๋ก ์ดˆ๋Œ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋ฒˆ๊ฑฐ๋กœ์›€ ์ค‘์—์„œ๋„ ํ”ผ๊ณคํ•œ HR ์ง์›์—๊ฒŒ ๊ณ ์šฉ์„ ์œ„ํ•ด ์ข…์ด ๋ฌธ์„œ๋ฅผ ์ œ์ถœํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
Java์˜ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ - 1
ํ”„๋กœ์„ธ์Šค ์†๋„๋ฅผ ๋†’์ด๊ธฐ ์œ„ํ•ด ํ•ด๋‹น ์ง์œ„์— ๋Œ€ํ•œ ์ง€์›์ž๋ฅผ ๋‘ ๊ทธ๋ฃน์œผ๋กœ ๋‚˜๋ˆ„๊ณ  ๋‘ ๋ช…์˜ HR ๊ด€๋ฆฌ์ž(ํšŒ์‚ฌ์— ์žˆ๋Š” ๊ฒฝ์šฐ)์—๊ฒŒ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ์ ์œผ๋กœ ๋ณ‘๋ ฌ ์„ค๊ณ„ ์ž‘์—…์œผ๋กœ ์ธํ•ด ํ”„๋กœ์„ธ์Šค ์†๋„๊ฐ€ ๋นจ๋ผ์ง‘๋‹ˆ๋‹ค.
Java์˜ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ - 2
ํšŒ์‚ฌ์— ์ธ์‚ฌ ๋‹ด๋‹น์ž๊ฐ€ ํ•œ ๋ช… ๋ฟ์ด๋ผ๋ฉด ์–ด๋–ป๊ฒŒ ๋“  ๋‚˜๊ฐ€์•ผ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋ชจ๋“  ์‚ฌ๋žŒ์„ ๋‹ค์‹œ ๋‘ ๊ทธ๋ฃน์œผ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์†Œ๋…€์™€ ์†Œ๋…„์„ ์ฐจ๋ก€๋กœ ์ธํ„ฐ๋ทฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
Java์˜ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ - 3
๋˜๋Š” ๋‹ค๋ฅธ ์›์น™์— ๋”ฐ๋ฅด๋ฉด ํ•˜์œ„ ๊ทธ๋ฃน์— ๋” ๋งŽ์€ ์‚ฌ๋žŒ์ด ์žˆ์œผ๋ฏ€๋กœ ์†Œ๋…„ ํ•œ ๋ช…์— ์†Œ๋…€ ๋‘ ๋ช…์„ ๋ฒˆ๊ฐˆ์•„ ๊ฐ€๋ฉฐ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
Java์˜ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ - 4
์ด๋Ÿฌํ•œ ์ž‘์—… ๊ตฌ์„ฑ ๋ฐฉ์‹์„ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค . ํ”ผ๊ณคํ•œ 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    {// ะะฐัˆะฐ ะพั‡ะตั€ะตะดัŒ ะธะท ัะพั‚ั€ัƒะดะฝะธะบะพะฒ, ะฝะฐัะปะตะดะฝะธะบ ะบะปะฐััะฐ Thread
    private String[] names;

    PeopleQueue(String... names) {// ะšะพะฝัั‚ั€ัƒะบั‚ะพั€, ะฐั€ะณัƒะผะตะฝั‚- ะผะฐััะธะฒ ะธะผะตะฝ ัะพั‚ั€ัƒะดะฝะธะบะพะฒ
        this.names = names;
    }

    @Override
    public void run() { // ะญั‚ะพั‚ ะผะตั‚ะพะด ะฑัƒะดะตั‚ ะฒั‹ะทะฒะฐะฝ ะฟั€ะธ ัั‚ะฐั€ั‚ะต ะฟะพั‚ะพะบะฐ
        for (int i = 0; i < names.length; i++) { // ะ’ั‹ะฒะพะด ะฒ ั†ะธะบะปะต ั ะฟะฐัƒะทะพะน 0.5 ัะตะบ ะพั‡ะตั€ะตะดะฝะพะณะพ ัะพั‚ั€ัƒะดะฝะธะบะฐ
            System.out.println("ะžะฑั€ะฐะฑะพั‚ะฐะฝั‹ documentั‹: " + names[i]);
            try {
                sleep(500); // ะ—ะฐะดะตั€ะถะบะฐ ะฒ 0.5 ัะตะบ
            } 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์˜ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ์€ ๋ณต์žกํ•˜๊ณ  ๋‹ค๋ฉด์ ์ธ ์ฃผ์ œ์ž…๋‹ˆ๋‹ค. ๋ณ‘๋ ฌ, ๋ฉ€ํ‹ฐํƒœ์Šคํ‚น ๋ฐ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ์ปดํ“จํŒ…์„ ์‚ฌ์šฉํ•˜์—ฌ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ธฐ๋Šฅ์€ ์ตœ์‹  ๋ฉ€ํ‹ฐ ์ฝ”์–ด ํ”„๋กœ์„ธ์„œ ๋ฐ ์—ฌ๋Ÿฌ ์ปดํ“จํ„ฐ๋กœ ๊ตฌ์„ฑ๋œ ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ์ž‘์—…์„ ํšจ๊ณผ์ ์œผ๋กœ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.
์ฝ”๋ฉ˜ํŠธ
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION