CodeGym /Java Blog /๋ฌด์ž‘์œ„์˜ /์ž๋ฐ”์˜ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ
John Squirrels
๋ ˆ๋ฒจ 41
San Francisco

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

๋ฌด์ž‘์œ„์˜ ๊ทธ๋ฃน์— ๊ฒŒ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค
์•ˆ๋…•! ์šฐ์„ , ์ถ•ํ•˜ํ•ฉ๋‹ˆ๋‹ค. Java์˜ ๋‹ค์ค‘ ์Šค๋ ˆ๋”ฉ ์ฃผ์ œ์— ๋„๋‹ฌํ–ˆ์Šต๋‹ˆ๋‹ค! ์ด๊ฒƒ์€ ์ค‘๋Œ€ํ•œ ์„ฑ๊ณผ์ž…๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ๋ถ„์€ ๋จผ ๊ธธ์„ ์™”์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์Šค์Šค๋กœ ์ค€๋น„ํ•˜์‹ญ์‹œ์˜ค. ์ด๊ฒƒ์€ ์ฝ”์Šค์—์„œ ๊ฐ€์žฅ ์–ด๋ ค์šด ์ฃผ์ œ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ๋Š” ๋ณต์žกํ•œ ํด๋ž˜์Šค๋‚˜ ๋งŽ์€ ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ๋Š” 20๊ฐœ ๋ฏธ๋งŒ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ƒ๊ฐํ•˜๋Š” ๋ฐฉ์‹์„ ์กฐ๊ธˆ ๋ฐ”๊ฟ”์•ผ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด์ „์—๋Š” ํ”„๋กœ๊ทธ๋žจ์ด ์ˆœ์ฐจ์ ์œผ๋กœ ์‹คํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์–ด๋–ค ์ฝ”๋“œ ์ค„์€ ๋‹ค๋ฅธ ์ค„ ๋‹ค์Œ์— ๋‚˜์™”๊ณ , ์–ด๋–ค ๋ฉ”์„œ๋“œ๋Š” ๋‹ค๋ฅธ ์ค„ ๋’ค์— ๋‚˜์™”๊ณ , ๋ชจ๋“  ๊ฒƒ์ด ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ช…ํ™•ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋จผ์ € ๋ฌด์–ธ๊ฐ€๋ฅผ ๊ณ„์‚ฐํ•œ ๋‹ค์Œ ๊ฒฐ๊ณผ๋ฅผ ์ฝ˜์†”์— ํ‘œ์‹œํ•œ ๋‹ค์Œ ํ”„๋กœ๊ทธ๋žจ์ด ์ข…๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ์„ ์ดํ•ดํ•˜๋ ค๋ฉด ๋ณ‘๋ ฌ์„ฑ ์ธก๋ฉด์—์„œ ์ƒ๊ฐํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๋งค์šฐ ๊ฐ„๋‹จํ•œ ๊ฒƒ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ) ๊ฐ€์กฑ์ด ํ•œ ์ง‘์—์„œ ๋‹ค๋ฅธ ์ง‘์œผ๋กœ ์ด์‚ฌํ•œ๋‹ค๊ณ  ์ƒ์ƒํ•ด ๋ณด์‹ญ์‹œ์˜ค. ๋ชจ๋“  ์ฑ…์„ ๋ชจ์œผ๋Š” ๊ฒƒ์ด ์ด์‚ฌ์˜ ์ค‘์š”ํ•œ ๋ถ€๋ถ„์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‹น์‹ ์€ ์ฑ…์„ ๋งŽ์ด ๋ชจ์•„์„œ ์ƒ์ž์— ๋„ฃ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ˜„์žฌ, ๋‹น์‹ ์€ ์œ ์ผํ•œ ์‚ฌ๋žŒ์ž…๋‹ˆ๋‹ค. ์—„๋งˆ๋Š” ์Œ์‹์„ ์ค€๋น„ํ•˜๊ณ , ์˜ค๋น ๋Š” ์˜ท์„ ์‹ธ๊ณ , ์–ธ๋‹ˆ๋Š” ๊ฐ€๊ฒŒ์— ๊ฐ”๋‹ค. ํ˜ผ์ž์„œ ์–ด๋–ป๊ฒŒ๋“  ํ•ด๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์กฐ๋งŒ๊ฐ„ ์Šค์Šค๋กœ ์ž‘์—…์„ ์™„๋ฃŒํ•˜๊ฒ ์ง€๋งŒ ์‹œ๊ฐ„์ด ๋งŽ์ด ๊ฑธ๋ฆด ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‹น์‹ ์˜ ์—ฌ๋™์ƒ์€ 20๋ถ„ ํ›„์— ๊ฐ€๊ฒŒ์—์„œ ๋Œ์•„์˜ฌ ๊ฒƒ์ด๊ณ  ๊ทธ๋…€๋Š” ํ•  ์ผ์ด ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๊ทธ๋…€๋Š” ๋‹น์‹ ๊ณผ ํ•จ๊ป˜ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž‘์—…์€ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์ฑ…์„ ์ƒ์ž์— ๋„ฃ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋‘ ๋ฐฐ ๋น ๋ฅด๊ฒŒ ์ˆ˜ํ–‰๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์™œ? ์ž‘์—…์ด ๋™์‹œ์— ์ง„ํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋‘ ๊ฐœ์˜ ์„œ๋กœ ๋‹ค๋ฅธ '์Šค๋ ˆ๋“œ'(๊ท€ํ•˜์™€ ์—ฌ๋™์ƒ)๊ฐ€ ๋™์ผํ•œ ์ž‘์—…์„ ๋™์‹œ์— ์ˆ˜ํ–‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์•„๋ฌด๊ฒƒ๋„ ๋ฐ”๋€Œ์ง€ ์•Š๋Š”๋‹ค๋ฉด, ๊ทธ๋Ÿฌ๋ฉด ๋ชจ๋“  ๊ฒƒ์„ ํ˜ผ์ž ํ•˜๋Š” ์ƒํ™ฉ์— ๋น„ํ•ด ์—„์ฒญ๋‚œ ์‹œ์ฐจ๊ฐ€ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ˜•์ œ๊ฐ€ ๊ณง ์ผ์„ ๋งˆ์น˜๋ฉด ๊ทธ๋Š” ๋‹น์‹ ์„ ๋„์šธ ์ˆ˜ ์žˆ๊ณ  ์ผ์ด ๋” ๋นจ๋ฆฌ ์ง„ํ–‰๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ์œผ๋กœ ํ•ด๊ฒฐ๋˜๋Š” ๋ฌธ์ œ

๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ์€ ์‹ค์ œ๋กœ ๋‘ ๊ฐ€์ง€ ์ค‘์š”ํ•œ ๋ชฉํ‘œ๋ฅผ ๋‹ฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ๋ฐœ๋ช…๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  1. ๋™์‹œ์— ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

    ์œ„์˜ ์˜ˆ์—์„œ ์„œ๋กœ ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ(๊ฐ€์กฑ ๊ตฌ์„ฑ์›)๋Š” ์—ฌ๋Ÿฌ ์ž‘์—…์„ ๋ณ‘๋ ฌ๋กœ ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ์„ค๊ฑฐ์ง€, ๊ฐ€๊ฒŒ์— ๊ฐ€๊ธฐ, ๋ฌผ๊ฑด ํฌ์žฅํ•˜๊ธฐ ๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

    ํ”„๋กœ๊ทธ๋ž˜๋ฐ๊ณผ ๋” ๋ฐ€์ ‘ํ•˜๊ฒŒ ๊ด€๋ จ๋œ ์˜ˆ๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์žˆ๋Š” ํ”„๋กœ๊ทธ๋žจ์ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœ๊ทธ๋žจ์—์„œ '๊ณ„์†'์„ ํด๋ฆญํ•˜๋ฉด ์ผ๋ถ€ ๊ณ„์‚ฐ์ด ์ˆ˜ํ–‰๋˜๊ณ  ์‚ฌ์šฉ์ž๋Š” ๋‹ค์Œ ํ™”๋ฉด์„ ๋ณด๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ž‘์—…์ด ์ˆœ์ฐจ์ ์œผ๋กœ ์ˆ˜ํ–‰๋˜๋ฉด ์‚ฌ์šฉ์ž๊ฐ€ '๊ณ„์†' ๋ฒ„ํŠผ์„ ํด๋ฆญํ•œ ํ›„ ํ”„๋กœ๊ทธ๋žจ์ด ์ค‘๋‹จ๋ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๋Š” ํ”„๋กœ๊ทธ๋žจ์ด ๋ชจ๋“  ๋‚ด๋ถ€ ๊ณ„์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์ƒˆ๋กœ ๊ณ ์ณ์ง€๋Š” ๋ถ€๋ถ„์— ๋„๋‹ฌํ•  ๋•Œ๊นŒ์ง€ '๊ณ„์†' ๋ฒ„ํŠผ ํ™”๋ฉด์ด ์žˆ๋Š” ํ™”๋ฉด์„ ๋ณด๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

    ๊ธ€์Ž„, ์šฐ๋ฆฌ๋Š” ๋ช‡ ๋ถ„ ๊ธฐ๋‹ค๋ฆด ๊ฒƒ ๊ฐ™์•„์š”!

    Java์˜ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ: ์ •์˜, ์ด์  ๋ฐ ์ผ๋ฐ˜์ ์ธ ํ•จ์ • - 3

    ๋˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์žฌ์ž‘์—…ํ•˜๊ฑฐ๋‚˜ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ๋งํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ '๋ณ‘๋ ฌํ™”'ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•œ ์Šค๋ ˆ๋“œ์—์„œ ๊ณ„์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ์—์„œ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ทธ๋ ค๋ด…์‹œ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ์ปดํ“จํ„ฐ์—๋Š” ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์ถฉ๋ถ„ํ•œ ๋ฆฌ์†Œ์Šค๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ๋กœ๋ฅผ ํƒํ•˜๋ฉด ํ”„๋กœ๊ทธ๋žจ์ด ์ค‘๋‹จ๋˜์ง€ ์•Š๊ณ  ์‚ฌ์šฉ์ž๊ฐ€ ๋‚ด๋ถ€์—์„œ ์ผ์–ด๋‚˜๋Š” ์ผ์— ๋Œ€ํ•ด ๊ฑฑ์ •ํ•˜์ง€ ์•Š๊ณ  ํ™”๋ฉด ์‚ฌ์ด๋ฅผ ์›ํ™œํ•˜๊ฒŒ ์ด๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜๋‚˜๋Š” ๋‹ค๋ฅธ ํ•˜๋‚˜๋ฅผ ๋ฐฉํ•ดํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค :)

  2. ๋” ๋น ๋ฅด๊ฒŒ ๊ณ„์‚ฐ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

    ์—ฌ๊ธฐ์„œ ๋ชจ๋“  ๊ฒƒ์ด ํ›จ์”ฌ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœ์„ธ์„œ์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ฝ”์–ด๊ฐ€ ์žˆ๊ณ  ์˜ค๋Š˜๋‚  ๋Œ€๋ถ€๋ถ„์˜ ํ”„๋กœ์„ธ์„œ์— ์žˆ๋Š” ๊ฒฝ์šฐ ์—ฌ๋Ÿฌ ์ฝ”์–ด๊ฐ€ ์ž‘์—… ๋ชฉ๋ก์„ ๋ณ‘๋ ฌ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ถ„๋ช…ํžˆ ์šฐ๋ฆฌ๊ฐ€ 1000๊ฐœ์˜ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๊ณ  ๊ฐ๊ฐ 1์ดˆ๊ฐ€ ๊ฑธ๋ฆฐ๋‹ค๋ฉด ํ•˜๋‚˜์˜ ์ฝ”์–ด๋Š” 1000์ดˆ ์•ˆ์—, ๋‘ ๊ฐœ์˜ ์ฝ”์–ด๋Š” 500์ดˆ ์•ˆ์—, ์„ธ ๊ฐœ์˜ ์ฝ”์–ด๋Š” 333์ดˆ๋ณด๋‹ค ์•ฝ๊ฐ„ ๋” ๋งŽ์€ ์‹œ๊ฐ„์— ๋ชฉ๋ก์„ ์™„๋ฃŒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์ด ๊ฐ•์˜์—์„œ ์ด๋ฏธ ์ฝ์—ˆ๋“ฏ์ด ์˜ค๋Š˜๋‚ ์˜ ์‹œ์Šคํ…œ์€ ๋งค์šฐ ์Šค๋งˆํŠธํ•˜๋ฉฐ ํ•˜๋‚˜์˜ ์ปดํ“จํŒ… ์ฝ”์–ด์—์„œ๋„ ์ž‘์—…์ด ๋ฒˆ๊ฐˆ์•„ ์ˆ˜ํ–‰๋˜๋Š” ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ ๋˜๋Š” ์œ ์‚ฌ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ๋ฅผ ๋‹ฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜ ์‚ฌํ•ญ์„ ์„ธ๋ถ€ ์‚ฌํ•ญ์œผ๋กœ ์ด๋™ํ•˜๊ณ  Java ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ํด๋ž˜์Šค์ธ java.lang.Thread์— ๋Œ€ํ•ด ์•Œ์•„๋ด…์‹œ๋‹ค. ์—„๋ฐ€ํžˆ ๋งํ•˜๋ฉด Java ์Šค๋ ˆ๋“œ๋Š” Thread ํด๋ž˜์Šค ์˜ ์ธ์Šคํ„ด์Šค๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค . ์ฆ‰, 10๊ฐœ์˜ ์Šค๋ ˆ๋“œ๋ฅผ ๋งŒ๋“ค๊ณ  ์‹คํ–‰ํ•˜๋ ค๋ฉด ์ด ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๊ฐ€ 10๊ฐœ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ์˜ˆ๋ฅผ ์ž‘์„ฑํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

public class MyFirstThread extends Thread {

   @Override
   public void run() {
       System.out.println("I'm Thread! My name is " + getName());
   }
}
์Šค๋ ˆ๋“œ๋ฅผ ๋งŒ๋“ค๊ณ  ์‹คํ–‰ํ•˜๋ ค๋ฉด ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค๊ณ  java.lang ์„ ์ƒ์†ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค . ํด๋ž˜์Šค๋ฅผ ์Šค๋ ˆ๋“œ ํ•˜๊ณ  ํ•ด๋‹น run() ๋ฉ”์„œ๋“œ๋ฅผ ์žฌ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰ ์š”๊ตฌ ์‚ฌํ•ญ์€ ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์Šค๋ ˆ๋“œ๊ฐ€ ์‹คํ–‰ํ•  ๋…ผ๋ฆฌ๋ฅผ ์ •์˜ํ•˜๋Š” ๊ฒƒ์€ run() ๋ฉ”์„œ๋“œ ์— ์žˆ์Šต๋‹ˆ๋‹ค . ์ด์ œ MyFirstThread ์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ค๊ณ  ์‹คํ–‰ํ•˜๋ฉด run () ๋ฉ”์„œ๋“œ๋Š” ์ด๋ฆ„์ด ์žˆ๋Š” ์ค„์„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. getName() ๋ฉ”์„œ๋“œ๋Š” ์ž๋™์œผ๋กœ ํ• ๋‹น๋˜๋Š” ์Šค๋ ˆ๋“œ์˜ '์‹œ์Šคํ…œ' ์ด๋ฆ„์„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์™œ ์šฐ๋ฆฌ๋Š” ์ž ์ •์ ์œผ๋กœ ๋งํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ? ํ•˜๋‚˜๋ฅผ ๋งŒ๋“ค๊ณ  ์•Œ์•„๋ณด์ž!

public class Main {

   public static void main(String[] args) {

       for (int i = 0; i < 10; i++) {

           MyFirstThread thread = new MyFirstThread();
           thread.start();
       }
   }
}
์ฝ˜์†” ์ถœ๋ ฅ: ์ €๋Š” Thread์ž…๋‹ˆ๋‹ค! ์ œ ์ด๋ฆ„์€ Thread-2์ž…๋‹ˆ๋‹ค. ์ €๋Š” Thread์ž…๋‹ˆ๋‹ค! ์ œ ์ด๋ฆ„์€ Thread-1์ž…๋‹ˆ๋‹ค. ์ €๋Š” Thread์ž…๋‹ˆ๋‹ค! ์ œ ์ด๋ฆ„์€ Thread-0์ž…๋‹ˆ๋‹ค. ์ €๋Š” Thread์ž…๋‹ˆ๋‹ค! ์ œ ์ด๋ฆ„์€ Thread-3์ž…๋‹ˆ๋‹ค. ์ €๋Š” Thread์ž…๋‹ˆ๋‹ค! ์ œ ์ด๋ฆ„์€ Thread-6์ž…๋‹ˆ๋‹ค. ์ €๋Š” Thread์ž…๋‹ˆ๋‹ค! ์ œ ์ด๋ฆ„์€ Thread-7์ž…๋‹ˆ๋‹ค. ์ €๋Š” Thread์ž…๋‹ˆ๋‹ค! ์ œ ์ด๋ฆ„์€ Thread-4์ž…๋‹ˆ๋‹ค. ์ €๋Š” Thread์ž…๋‹ˆ๋‹ค! ์ œ ์ด๋ฆ„์€ Thread-5์ž…๋‹ˆ๋‹ค. ์ €๋Š” Thread์ž…๋‹ˆ๋‹ค! ์ œ ์ด๋ฆ„์€ Thread-9์ž…๋‹ˆ๋‹ค. ์ €๋Š” Thread์ž…๋‹ˆ๋‹ค! ๋‚ด ์ด๋ฆ„์€ Thread-8์ž…๋‹ˆ๋‹ค. 10๊ฐœ์˜ ์Šค๋ ˆ๋“œ( Thread ๋ฅผ ์ƒ์†ํ•˜๋Š” MyFirstThread ๊ฐœ์ฒด ) ๋ฅผ ๋งŒ๋“ค๊ณ  ๊ฐ ๊ฐœ์ฒด์— ๋Œ€ํ•ด start() ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ์Šค๋ ˆ๋“œ๋ฅผ ์‹œ์ž‘ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค . start() ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•œ ํ›„ run() ๋ฉ”์„œ๋“œ ์˜ ๋…ผ๋ฆฌ๊ฐ€ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ์ฐธ๊ณ : ์Šค๋ ˆ๋“œ ์ด๋ฆ„์€ ์ˆœ์„œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์ด ์ˆœ์ฐจ์ ์œผ๋กœ ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒƒ์ด ์ด์ƒํ•ฉ๋‹ˆ๋‹ค., Thread-1 , Thread-2 ๋“ฑ? ๊ณต๊ต๋กญ๊ฒŒ๋„ ์ด๊ฒƒ์€ '์ˆœ์ฐจ์ ' ์‚ฌ๊ณ ๊ฐ€ ๋งž์ง€ ์•Š๋Š” ์‹œ๋Œ€์˜ ์˜ˆ์ž…๋‹ˆ๋‹ค. ๋ฌธ์ œ๋Š” 10๊ฐœ์˜ ์Šค๋ ˆ๋“œ๋ฅผ ๋งŒ๋“ค๊ณ  ์‹คํ–‰ํ•˜๋Š” ๋ช…๋ น๋งŒ ์ œ๊ณตํ–ˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํŠน์ˆ˜ ์šด์˜ ์ฒด์ œ ๋ฉ”์ปค๋‹ˆ์ฆ˜์ธ ์Šค๋ ˆ๋“œ ์Šค์ผ€์ค„๋Ÿฌ๊ฐ€ ์‹คํ–‰ ์ˆœ์„œ๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ์ •ํ™•ํ•œ ๋””์ž์ธ๊ณผ ์˜์‚ฌ ๊ฒฐ์ • ์ „๋žต์€ ์ง€๊ธˆ ๋‹น์žฅ ๊นŠ์ด ๋…ผ์˜ํ•˜์ง€ ์•Š์„ ์ฃผ์ œ์ž…๋‹ˆ๋‹ค. ๊ธฐ์–ตํ•ด์•ผ ํ•  ์ฃผ์š” ์‚ฌํ•ญ์€ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์Šค๋ ˆ๋“œ์˜ ์‹คํ–‰ ์ˆœ์„œ๋ฅผ ์ œ์–ดํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ƒํ™ฉ์˜ ์‹ฌ๊ฐ์„ฑ์„ ์ดํ•ดํ•˜๋ ค๋ฉด ์œ„์˜ ์˜ˆ์—์„œ main() ๋ฉ”์†Œ๋“œ๋ฅผ ๋ช‡ ๋ฒˆ ๋” ์‹คํ–‰ํ•ด ๋ณด์‹ญ์‹œ์˜ค. ๋‘ ๋ฒˆ์งธ ์‹คํ–‰ ์‹œ ์ฝ˜์†” ์ถœ๋ ฅ: ๋‚˜๋Š” ์Šค๋ ˆ๋“œ๋‹ค! ์ œ ์ด๋ฆ„์€ Thread-0์ž…๋‹ˆ๋‹ค. ์ €๋Š” Thread์ž…๋‹ˆ๋‹ค! ์ œ ์ด๋ฆ„์€ Thread-4์ž…๋‹ˆ๋‹ค. ์ €๋Š” Thread์ž…๋‹ˆ๋‹ค! ์ œ ์ด๋ฆ„์€ Thread-3์ž…๋‹ˆ๋‹ค. ์ €๋Š” Thread์ž…๋‹ˆ๋‹ค! ์ œ ์ด๋ฆ„์€ Thread-2์ž…๋‹ˆ๋‹ค. ์ €๋Š” Thread์ž…๋‹ˆ๋‹ค! ์ œ ์ด๋ฆ„์€ Thread-1์ž…๋‹ˆ๋‹ค. ์ €๋Š” Thread์ž…๋‹ˆ๋‹ค! ์ œ ์ด๋ฆ„์€ Thread-5์ž…๋‹ˆ๋‹ค. ์ €๋Š” Thread์ž…๋‹ˆ๋‹ค! ์ œ ์ด๋ฆ„์€ Thread-6์ž…๋‹ˆ๋‹ค. ์ €๋Š” Thread์ž…๋‹ˆ๋‹ค! ์ œ ์ด๋ฆ„์€ Thread-8์ž…๋‹ˆ๋‹ค. ์ €๋Š” Thread์ž…๋‹ˆ๋‹ค! ์ œ ์ด๋ฆ„์€ Thread-9์ž…๋‹ˆ๋‹ค. ์ €๋Š” Thread์ž…๋‹ˆ๋‹ค! ๋‚ด ์ด๋ฆ„์€ Thread-7 ์„ธ ๋ฒˆ์งธ ์‹คํ–‰์˜ ์ฝ˜์†” ์ถœ๋ ฅ: I'm Thread! ์ œ ์ด๋ฆ„์€ Thread-0์ž…๋‹ˆ๋‹ค. ์ €๋Š” Thread์ž…๋‹ˆ๋‹ค! ์ œ ์ด๋ฆ„์€ Thread-3์ž…๋‹ˆ๋‹ค. ์ €๋Š” Thread์ž…๋‹ˆ๋‹ค! ์ œ ์ด๋ฆ„์€ Thread-1์ž…๋‹ˆ๋‹ค. ์ €๋Š” Thread์ž…๋‹ˆ๋‹ค! ์ œ ์ด๋ฆ„์€ Thread-2์ž…๋‹ˆ๋‹ค. ์ €๋Š” Thread์ž…๋‹ˆ๋‹ค! ์ œ ์ด๋ฆ„์€ Thread-6์ž…๋‹ˆ๋‹ค. ์ €๋Š” Thread์ž…๋‹ˆ๋‹ค! ์ œ ์ด๋ฆ„์€ Thread-4์ž…๋‹ˆ๋‹ค. ์ €๋Š” Thread์ž…๋‹ˆ๋‹ค! ์ œ ์ด๋ฆ„์€ Thread-9์ž…๋‹ˆ๋‹ค. ์ €๋Š” Thread์ž…๋‹ˆ๋‹ค! ์ œ ์ด๋ฆ„์€ Thread-5์ž…๋‹ˆ๋‹ค. ์ €๋Š” Thread์ž…๋‹ˆ๋‹ค! ์ œ ์ด๋ฆ„์€ Thread-7์ž…๋‹ˆ๋‹ค. ์ €๋Š” Thread์ž…๋‹ˆ๋‹ค! ๋‚ด ์ด๋ฆ„์€ ์Šค๋ ˆ๋“œ-8์ž…๋‹ˆ๋‹ค.

๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ์œผ๋กœ ์ธํ•œ ๋ฌธ์ œ

์ฑ…์— ๋Œ€ํ•œ ์˜ˆ์—์„œ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ์ด ๋งค์šฐ ์ค‘์š”ํ•œ ์ž‘์—…์„ ํ•ด๊ฒฐํ•˜๊ณ  ํ”„๋กœ๊ทธ๋žจ์„ ๋” ๋น ๋ฅด๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Œ์„ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค. ์ข…์ข… ๋ช‡ ๋ฐฐ ๋” ๋น ๋ฆ…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ์€ ์–ด๋ ค์šด ์ฃผ์ œ๋กœ ์—ฌ๊ฒจ์ง„๋‹ค. ์‹ค์ œ๋กœ ๋ถ€์ ์ ˆํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๋ฉด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋Œ€์‹  ๋ฌธ์ œ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ '๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚จ๋‹ค'๊ณ  ๋งํ•  ๋•Œ ์–ด๋–ค ์ถ”์ƒ์ ์ธ ์˜๋ฏธ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ๋‹ค์ค‘ ์Šค๋ ˆ๋”ฉ์ด ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ๋‘ ๊ฐ€์ง€ ํŠน์ • ๋ฌธ์ œ๋Š” ๊ต์ฐฉ ์ƒํƒœ์™€ ๊ฒฝํ•ฉ ์ƒํƒœ์ž…๋‹ˆ๋‹ค. ๊ต์ฐฉ ์ƒํƒœ๋Š” ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๊ฐ€ ์„œ๋กœ ๋ณด์œ ํ•˜๊ณ  ์žˆ๋Š” ๋ฆฌ์†Œ์Šค๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ๊ณ  ๊ทธ ์ค‘ ์–ด๋Š ๊ฒƒ๋„ ๊ณ„์† ์‹คํ–‰ํ•  ์ˆ˜ ์—†๋Š” ์ƒํ™ฉ์ž…๋‹ˆ๋‹ค. ๋‹ค์Œ ์ˆ˜์—…์—์„œ ๋” ์ž์„ธํžˆ ์ด์•ผ๊ธฐํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ์€ ๋‹ค์Œ ์˜ˆ์ œ๋กœ ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. Java์˜ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ: ์ •์˜, ์ด์  ๋ฐ ์ผ๋ฐ˜์ ์ธ ํ•จ์ • - 4Thread-1์ด ์ผ๋ถ€ Object-1๊ณผ ์ƒํ˜ธ ์ž‘์šฉํ•˜๊ณ  Thread-2๊ฐ€ Object-2์™€ ์ƒํ˜ธ ์ž‘์šฉํ•œ๋‹ค๊ณ  ์ƒ์ƒํ•ด ๋ณด์‹ญ์‹œ์˜ค. ๋˜ํ•œ ํ”„๋กœ๊ทธ๋žจ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž‘์„ฑ๋ฉ๋‹ˆ๋‹ค.
  1. Thread-1์€ Object-1๊ณผ์˜ ์ƒํ˜ธ ์ž‘์šฉ์„ ์ค‘์ง€ํ•˜๊ณ  Thread-2๊ฐ€ Object-2์™€์˜ ์ƒํ˜ธ ์ž‘์šฉ์„ ์ค‘๋‹จํ•˜๊ณ  Object-1๋กœ ์ „ํ™˜๋˜๋Š” ์ฆ‰์‹œ Object-2๋กœ ์ „ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
  2. Thread-2๋Š” Object-2์™€์˜ ์ƒํ˜ธ ์ž‘์šฉ์„ ์ค‘์ง€ํ•˜๊ณ  Thread-1์ด Object-1๊ณผ์˜ ์ƒํ˜ธ ์ž‘์šฉ์„ ์ค‘๋‹จํ•˜๊ณ  Object-2๋กœ ์ „ํ™˜๋˜๋Š” ์ฆ‰์‹œ Object-1๋กœ ์ „ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ์— ๋Œ€ํ•œ ๊นŠ์€ ์ดํ•ด๊ฐ€ ์—†์–ด๋„ ์•„๋ฌด ์ผ๋„ ์ผ์–ด๋‚˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์„ ์‰ฝ๊ฒŒ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์Šค๋ ˆ๋“œ๋Š” ์œ„์น˜๋ฅผ ๋ฐ”๊พธ์ง€ ์•Š๊ณ  ์„œ๋กœ๋ฅผ ์˜์›ํžˆ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค. ์˜ค๋ฅ˜๋Š” ๋ช…๋ฐฑํ•ด ๋ณด์ด์ง€๋งŒ ์‹ค์ œ๋กœ๋Š” ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ”„๋กœ๊ทธ๋žจ์—์„œ ์‰ฝ๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ๋‹จ์›์—์„œ ๊ต์ฐฉ ์ƒํƒœ๋ฅผ ์œ ๋ฐœํ•˜๋Š” ์ฝ”๋“œ์˜ ์˜ˆ๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฑด ๊ทธ๋ ‡๊ณ , Quora๋Š” ๊ต์ฐฉ ์ƒํƒœ๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์„ค๋ช…ํ•˜๋Š” ํ›Œ๋ฅญํ•œ ์‹ค์ œ ์˜ˆ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.์ด๋‹ค. '์ธ๋„์˜ ์ผ๋ถ€ ์ฃผ์—์„œ๋Š” ๋“ฑ๋ก๋œ ๋†๋ถ€๊ฐ€ ์•„๋‹ˆ๋ฉด ๋†์ง€๋ฅผ ํŒ”์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋†์ง€๋ฅผ ์†Œ์œ ํ•˜์ง€ ์•Š์œผ๋ฉด ๋†๋ถ€๋กœ ๋“ฑ๋กํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.' ์—„์ฒญ๋‚œ! ์šฐ๋ฆฌ๋Š” ๋ฌด์—‡์„ ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?! :) ์ด์ œ ๊ฒฝ์Ÿ ์กฐ๊ฑด์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•ด ๋ด…์‹œ๋‹ค. ๊ฒฝ์Ÿ ์กฐ๊ฑด์€ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ์‹œ์Šคํ…œ ๋˜๋Š” ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์˜ ์„ค๊ณ„ ์˜ค๋ฅ˜๋กœ, ์‹œ์Šคํ…œ ๋˜๋Š” ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์˜ ์ž‘๋™์€ ์ฝ”๋“œ ๋ถ€๋ถ„์ด ์‹คํ–‰๋˜๋Š” ์ˆœ์„œ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค. ์Šค๋ ˆ๋“œ๋ฅผ ์‹œ์ž‘ํ•œ ์˜ˆ์ œ๋ฅผ ๊ธฐ์–ตํ•˜์„ธ์š”.

public class MyFirstThread extends Thread {

   @Override
   public void run() {
       System.out.println("Thread executed: " + getName());
   }
}

public class Main {

   public static void main(String[] args) {

       for (int i = 0; i < 10; i++) {

           MyFirstThread thread = new MyFirstThread();
           thread.start();
       }
   }
}
์ด์ œ ํ”„๋กœ๊ทธ๋žจ์ด ์Œ์‹์„ ์š”๋ฆฌํ•˜๋Š” ๋กœ๋ด‡์„ ์‹คํ–‰ํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค๊ณ  ์ƒ์ƒํ•ด ๋ณด์‹ญ์‹œ์˜ค! Thread-0์€ ๋ƒ‰์žฅ๊ณ ์—์„œ ๊ณ„๋ž€์„ ๊บผ๋ƒ…๋‹ˆ๋‹ค. Thread-1์€ ์Šคํ† ๋ธŒ๋ฅผ ์ผญ๋‹ˆ๋‹ค. Thread-2๋Š” ํŒฌ์„ ๊ฐ€์ ธ์™€ ์Šคํ† ๋ธŒ ์œ„์— ๋†“์Šต๋‹ˆ๋‹ค. Thread-3๊ฐ€ ์Šคํ† ๋ธŒ์— ๋ถˆ์„ ๋ถ™์ž…๋‹ˆ๋‹ค. Thread-4๊ฐ€ ํŒฌ์— ๊ธฐ๋ฆ„์„ ๋ถ“์Šต๋‹ˆ๋‹ค. Thread-5๋Š” ๊ณ„๋ž€์„ ๊นจ์„œ ํŒฌ์— ๋ถ“์Šต๋‹ˆ๋‹ค. Thread-6๋Š” ๋‹ฌ๊ฑ€ ๊ป์งˆ์„ ์“ฐ๋ ˆ๊ธฐํ†ต์— ๋ฒ„๋ฆฝ๋‹ˆ๋‹ค. Thread-7์€ ๋ฒ„๋„ˆ์—์„œ ์ตํžŒ ๊ณ„๋ž€์„ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค. Thread-8์€ ์ตํžŒ ๊ณ„๋ž€์„ ์ ‘์‹œ์— ๋‹ด์Šต๋‹ˆ๋‹ค. Thread-9๊ฐ€ ์„ค๊ฑฐ์ง€๋ฅผ ํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœ๊ทธ๋žจ์˜ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์‹ญ์‹œ์˜ค: ์‹คํ–‰๋œ ์Šค๋ ˆ๋“œ: ์Šค๋ ˆ๋“œ-0 ์‹คํ–‰๋œ ์Šค๋ ˆ๋“œ: ์Šค๋ ˆ๋“œ-2 ์‹คํ–‰๋œ ์Šค๋ ˆ๋“œ-1 ์‹คํ–‰๋œ ์Šค๋ ˆ๋“œ: ์Šค๋ ˆ๋“œ-4 ์‹คํ–‰๋œ ์Šค๋ ˆ๋“œ: ์Šค๋ ˆ๋“œ-9 ์‹คํ–‰๋œ ์Šค๋ ˆ๋“œ: ์Šค๋ ˆ๋“œ-5 ์‹คํ–‰๋œ ์Šค๋ ˆ๋“œ: ์Šค๋ ˆ๋“œ-8 ์Šค๋ ˆ๋“œ ์‹คํ–‰๋จ: ์Šค๋ ˆ๋“œ-7 ์‹คํ–‰๋œ ์Šค๋ ˆ๋“œ: ์Šค๋ ˆ๋“œ-3 ์ฝ”๋ฏธ๋”” ๋ฃจํ‹ด์ธ๊ฐ€์š”? :) ๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ ํ”„๋กœ๊ทธ๋žจ์˜ ์ž‘์—…์€ ์Šค๋ ˆ๋“œ์˜ ์‹คํ–‰ ์ˆœ์„œ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง€๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ํ•„์š”ํ•œ ์ˆœ์„œ๋ฅผ ์กฐ๊ธˆ์ด๋ผ๋„ ์œ„๋ฐ˜ํ•˜๋ฉด ์šฐ๋ฆฌ ๋ถ€์—Œ์€ ์ง€์˜ฅ์œผ๋กœ ๋ณ€ํ•˜๊ณ  ๋ฏธ์นœ ๋กœ๋ด‡์ด ์ฃผ๋ณ€์˜ ๋ชจ๋“  ๊ฒƒ์„ ํŒŒ๊ดดํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋‹ค์ค‘ ์Šค๋ ˆ๋“œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ํ”ํžˆ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ์ด๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ํ•œ ๋ฒˆ ์ด์ƒ ๋“ฃ๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ์ˆ˜์—…์„ ๋งˆ์น˜๋ฉด์„œ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ์— ๊ด€ํ•œ ์ฑ…์„ ์ถ”์ฒœํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. Java์˜ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ: ์ •์˜, ์ด์  ๋ฐ ์ผ๋ฐ˜์ ์ธ ํ•จ์ • - 6'Java Concurrency in Practice'๋Š” 2006๋…„์— ์ž‘์„ฑ๋˜์—ˆ์ง€๋งŒ ๊ด€๋ จ์„ฑ์„ ์žƒ์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๋ถ€ํ„ฐ ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ์‹ค์ˆ˜ ๋ฐ ๋ฐ˜ํŒจํ„ด์— ์ด๋ฅด๊ธฐ๊นŒ์ง€ ๋‹ค์ค‘ ์Šค๋ ˆ๋“œ Java ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ „์šฉ์ž…๋‹ˆ๋‹ค. ์–ธ์  ๊ฐ€ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ ์ „๋ฌธ๊ฐ€๊ฐ€ ๋˜๊ธฐ๋กœ ๊ฒฐ์‹ฌํ–ˆ๋‹ค๋ฉด ์ด ์ฑ…์€ ๋ฐ˜๋“œ์‹œ ์ฝ์–ด์•ผ ํ•  ์ฑ…์ž…๋‹ˆ๋‹ค. ๋‹ค์Œ ์ˆ˜์—…์—์„œ ๋งŒ๋‚˜์š”! :)
์ฝ”๋ฉ˜ํŠธ
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION