"์๋ , ์๋ฏธ๊ณ !"
"ํ์ง๋ง ์ฐ๋ฆฐ ์ด๋ฏธ ์ธ์ฌํ์ง, ์๋ฆฌ!"
"์ด๋ด, ์ด๋ชจ๋ ๋ง๋คํผํ์ง ๋ง. 31์ธ๊ธฐ์๋ ๋๊ตฐ๊ฐ๋ฅผ 30๋ถ ์ด์ ๋ง๋์ง ์์ผ๋ฉด ๋ค์ ์ธ์ฌํ๋ ๊ฒ์ด ๊ด์ต์ด์ผ. ๊ทธ๋ฌ๋ ๋์๊ฒ ํ๋๋ฅผ ์ฃผ์ง ๋ง!"
"์ด์จ๋ , ๋ ๋ค๋ฅธ ํฅ๋ฏธ๋ก์ด ์ฃผ์ ์ธ ๋ก๋ด ์ฌ์์ฐ์ ํ ์๊ฐ์ ๋๋ค!"
"O_O."
"๋๋ด์ ๋๋ค. ์๋ก์ด ์ฃผ์ ๋ ์ต๋ช ์ ๋ด๋ถ ํด๋์ค ์ ๋๋ค ."
"Java์์๋ ๋๋๋ก ์ฌ๋ฌ ํด๋์ค๋ฅผ ์์ํ๊ธฐ ์ํด ํด๋์ค๊ฐ ํ์ํ ์ํฉ์ด ์์ต๋๋ค. Java๋ ๋ค์ค ์์์ ์ง์ํ์ง ์๊ธฐ ๋๋ฌธ์ ๋ด๋ถ ํด๋์ค๋ฅผ ์ฌ์ฉํ์ฌ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ต๋๋ค. ์ฐ๋ฆฌ ํด๋์ค์์๋ ๋ด๋ถ ํด๋์ค๋ฅผ ์ ์ธํ๊ณ ์์์ ํ์ํ ๋ชจ๋ ํด๋์ค๋ฅผ ์์ํฉ๋๋ค. ์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค."
class Tiger extends Cat
{
public void tigerRun()
{
.....
}
public void startTiger()
{
TigerThread thread = new TigerThread();
thread.start();
}
class TigerThread extends Thread
{
public void run()
{
tigerRun();
}
}
}
"๋ค๋ฅธ ์๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค."
์คํ ๋ฉ์๋๋ฅผ ์ฌ์ ์ํ๋ ค๋ฉด Thread ํด๋์ค์ ํ์ ํด๋์ค๊ฐ ํ์ํฉ๋๋ค."
"๊ทธ๋์ Tiger ํด๋์ค์์ Thread๋ฅผ ์์ํ๊ณ run ๋ฉ์๋๋ฅผ ์ฌ์ ์ํ๋ TigerThread ๋ด๋ถ ํด๋์ค๋ฅผ ์ ์ธํ์ต๋๋ค.
"ํธ์๋ฅผ ์ํด Tiger ํด๋์ค์ ๋ ๊ฐ์ง ๋ฉ์๋์ธ tigerRun๊ณผ startTiger๋ฅผ ์ ์ํ์ต๋๋ค (Thread์ ์คํ ๋ฐ ์์ ๋ฉ์๋์ ์ ์ฌํฉ๋๋ค.").
"tigerStart ๋ฉ์๋์์ TigerThread ๊ฐ์ฒด๋ฅผ ์์ฑ ํ๊ณ start() ๋ฉ์๋๋ฅผ ํธ์ถํฉ๋๋ค."
"JVM์ TigerThread์ ์คํ ๋ฉ์๋๊ฐ ํธ์ถ๋ ๋ ์คํ์ ์์ํ ์ ์ค๋ ๋๋ฅผ ์์ฑํฉ๋๋ค ."
"๊ทธ๋ฐ ๋ค์ ์ด ๋ฉ์๋๋ ์ฐ๋ฆฌ์ ์คํ ๋ฉ์๋์ธ tigerRun์ ํธ์ถํฉ๋๋ค ."
"์ด์ ์ ์ค๋ ๋๋ก ์์ ํ ์ ์ด ์์ผ๋ฏ๋ก ๊ฐ๋จํด ๋ณด์ ๋๋ค."
"๋ฐฉ๋ฒ์ ์ด๋ฆ์ tigerRun ๋ฐ tigerStart๋ก ์ง์ ํด์ผ ํฉ๋๊น?"
"์๋์, ์คํ ๋ฐ ์์์ด๋ผ๊ณ ๋ถ๋ฅผ ์ ์์์ง๋ง Thread๋ฅผ ์์ํ์ง ์๋๋ค๋ ๊ฒ์ ๋ณด์ฌ์ฃผ๊ณ ์ถ์์ต๋๋ค. ์ค๋ช ์ด ๋ ํผ๋์ค๋ฌ์ธ ์ ์์ต๋๋ค."
"์๊ฒ ์ต๋๋ค. ๊ทธ๋ผ ์๊ฒ ์ต๋๋ค. ํ์ง๋ง tigerStart๊ฐ ๋ ๋ฒ์งธ๋ก ํธ์ถ๋๋ฉด ๋ ๋ฒ์งธ Thread ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ ์์ํฉ๋๋ค. "๋ ๊ฐ์ ์๋ก ๋ค๋ฅธ ์ค๋ ๋์์ ์คํ ์ค์ธ ํ๋์ ํธ๋์ด"๊ฐ ์๋ค๋ ์๋ฏธ๊ฐ ์๋๋๊น? "
"๊ธ์, ๋น์ ์ ๋ ์นด๋กญ์ง ์์ต๋๊น! ๋น์ ์ด ์ณ๊ณ ์ข์ง ์์ต๋๋ค. ๋ค์๊ณผ ๊ฐ์ด ์ฝ๋๋ฅผ ๋ค์ ์์ฑํด ๋ด ์๋ค."
class Tiger extends Cat
{
public void tigerRun()
{
.....
}
public void startTiger()
{
thread.start();
}
private TigerThread thread = new TigerThread();
private class TigerThread extends Thread
{
public void run()
{
tigerRun();
}
}
}
"์๋ฒฝํ์ง ์์ต๋๋ค. ์ฌ์ ํ ๊ทธ๋ฐ ๋ฉ์๋๋ฅผ ๋ ๋ฒ ํธ์ถํ ์ ์์ต๋๋ค. ํ์ง๋ง ์ด๋ฒ์๋ ์ ์ด๋ ๋ ๋ฒ์งธ ์ค๋ ๋๋ฅผ ์์ฑํ์ง ์๊ณ ๋ชจ๋ ๊ฒ์ด ๊ด์ฐฎ์ ๊ฒ์ฒ๋ผ ๋ณด์ด๊ฒ ํ ๊ฒ์ ๋๋ค."
"๊ทธ๋ ์ต๋๋ค. Tiger๊ฐ ๋ ๋ฒ์งธ๋ก ์์๋๋ฉด ์์ธ๊ฐ ๋ฐ์ํฉ๋๋ค."
"๋๋ ์ด๋ฏธ ๋๋ณด๋ค ์ค์๋ฅผ ๋ ์ ์ฐพ์๋ด๊ณ ์์ด, ์๋ฆฌ!"
"๊ทธ๋, ์ํ๊ณ ์์ด. ๊ทธ๋ผ ์ต๋ช ์ ๋ด๋ถ ํด๋์ค๋ก ๋์ด๊ฐ์."
"์ ์ฝ๋์ ์ฌ๋ฌ ์ธก๋ฉด์ ์ ์ํ์ญ์์ค."
1) ์ฐ๋ฆฌ๋ Thread ํด๋์ค๋ฅผ ๋ฌผ๋ ค๋ฐ์์ง๋ง ์ค์ ๋ก ๊ฑฐ๊ธฐ์ ์ฝ๋๋ฅผ ๊ตฌํํ์ง ์์์ต๋๋ค. "ยซ์ฐ๋ฆฌ๋ ๊ทธ๊ฒ์ ํ์ฅํ๊ธฐ ์ํด ๊ทธ๊ฒ์ ๋ฌผ๋ ค๋ฐ์์ต๋๋คยป๋ผ๊ธฐ๋ณด๋ค๋ ยซ์ฐ๋ฆฌ๋ Thread ํด๋์ค๋ฅผ ๋ฌผ๋ ค๋ฐ์์ผ ํ์ต๋๋คยป์์ต๋๋ค.
2) ํ๋์ TigerThread ๊ฐ์ฒด๋ง ์์ฑ๋ฉ๋๋ค.
์ฆ, ํ๋์ ๋ฉ์๋๋ฅผ ์ฌ์ ์ํ๊ณ ํ๋์ ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ธฐ ์ํด ์ฝ๋ ์ ์ฒด๋ฅผ ์์ฑํ์ต๋๋ค.
๋ด๊ฐ ์์ฑ์์ ๋ฐ๋ช ์ ๋ํด ์ด๋ป๊ฒ ์ด์ผ๊ธฐํ๋์ง ๊ธฐ์ตํ์ญ๋๊น?
์์ฑ์ ์ด์ | ์์ฑ์ ์ดํ |
---|---|
|
|
"์ฝ๋๊ฐ ๋ ๊ฐ๊ฒฐํด์ง ๊ฒ์ ๋ณผ ์ ์์ง๋ง ๋ฌด์จ ์ผ์ด ์ผ์ด๋๊ณ ์๋์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค."
"๋ค ๊ฐ์ง๋ฅผ ํ๋๋ก ๊ฒฐํฉํ ์ ์์ต๋๋ค."
1) ํ์ ํด๋์ค ์ ์ธ
2) ๋ฉ์๋ ์ฌ์ ์
3) ๋ณ์ ์ ์ธ
4) ํ์ ํด๋์ค์ ์ธ์คํด์ค ์์ฑ.
"์ฌ์ค ์ฐ๋ฆฌ๊ฐ ํ๊ณ ์๋ ์ผ์ ํ์ ํด๋์ค๋ฅผ ์ ์ธํ๊ณ ํด๋น ํด๋์ค์ ์ธ์คํด์ค๋ฅผ ์์ฑํ๋ ๋ ๊ฐ์ง ์์ ์ ๊ฒฐํฉํ๋ ๊ฒ์ ๋๋ค."
์ต๋ช ํด๋์ค ์์ด | ์ต๋ช ์์ ์ผ๋ก |
---|---|
|
|
"๊ตฌ๋ฌธ์ ๋ค์ ์ดํด๋ณด๊ฒ ์ต๋๋ค."
Thread thread = new Thread();
Thread thread = new Thread()
{
};
"๋จ์ํ ์ ํด๋์ค๋ฅผ ์ ์ํ๋ ๊ฒ์ด ์๋๋๋ค. ๋ณ์๋ฅผ ๋ง๋๋ ๊ฒ์ ๋๋ค. ๋์ ์ธ๋ฏธ์ฝ๋ก ์ด ์์ต๋๋ค!"
"๊ทธ๋ฆฌ๊ณ run ๋ฉ์๋๋ฅผ ์ฌ์ ์ํ๋ ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์์ฑํด์ผ ํฉ๋๋ค."
Thread thread = new Thread()
{
public void run()
{
System.out.println("new run-method");
}
};
"๋น์ ์ ๋นจ๋ฆฌ ๋ฐ๋ผ ์ก์ต๋๋ค. ์ ํ์ด!"
"๊ณ ๋ง์ต๋๋ค. Thread ํด๋์ค์ ์ผ๋ถ๊ฐ ์๋ ๋ค๋ฅธ ๋ฉ์๋๊ฐ ํ์ํ๋ฉด ์ด๋ป๊ฒ ํฉ๋๊น?"
"๋น์ ์ ๊ทธ๋ค์ ์ธ ์ ์์ต๋๋ค."
"๋น๋ก ์ต๋ช ์ด์ง๋ง ๋ณธ๊ฒฉ์ ์ธ ๋ด๋ถ ํด๋์ค์ ๋๋ค."
์๋ฐ ์ฝ๋ | ์ค๋ช |
---|---|
|
๋นจ๊ฐ์: ๋ณ์๋ฅผ ์์ฑํ๊ธฐ ์ํ ์ฝ๋์
๋๋ค.
๋ น์: ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ธฐ ์ํ ์ฝ๋์ ๋๋ค. ํ๋์: ์ต๋ช ํ์ ํด๋์ค์ ๋ํ ์ฝ๋์ ๋๋ค. |
"๋ณธ๊ฒฉ์ ์ธ ์ด๋ ํด๋์ค?"
"๊ทธ๋ฌ๋ฉด ์ธ๋ถ ํด๋์ค์ ๋ณ์๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๊น?"
"์ ์ ์ผ๋ก."
"๊ทธ๋ฆฌ๊ณ ์์ฑ์์๊ฒ ๋ฌด์ธ๊ฐ๋ฅผ ์ ๋ฌํ ์ ์์ต๋๊น?"
"์, ํ์ง๋ง ์ํผํด๋์ค์ ์์ฑ์์ ๋ํ ์ธ์๋ง:"
์์ | ์ต๋ช ๋ด๋ถ ํด๋์ค์ ์ธ์คํด์ค |
---|---|
|
|
"์ฐ๋ฆฌ๋ ๋ค๋ฅธ ์ฌ๋์ ์์ฑ์์ ์ฐ๋ฆฌ ์์ ์ ๋งค๊ฐ๋ณ์๋ฅผ ์ถ๊ฐํ ์ ์์ต๋๋ค. ํ์ง๋ง ์ธ๋ถ ํด๋์ค์ ๋ณ์๋ฅผ ์ฌ์ฉํ ์ ์์ด ์ด ๋จ์ ์ ํ๋ฅญํ๊ฒ ๋ณด์ํฉ๋๋ค."
"์์ง๋ ์์ฑ์์ ๋ค๋ฅธ ๋งค๊ฐ๋ณ์๋ฅผ ์ถ๊ฐํด์ผ ํ๋ ๊ฒฝ์ฐ์๋ ์ด๋ป๊ฒ ํด์ผ ํฉ๋๊น?"
"๊ทธ๋ฐ ๋ค์ ์ผ๋ฐ(๋น์ต๋ช ) ๋ด๋ถ ํด๋์ค๋ฅผ ์ ์ธํ๊ณ ์ฌ์ฉํฉ๋๋ค."
"๋ง์, ๊ฑฐ์ ์๊ณ ์์์ด."
"์ ์ ๋ณ์๋ฅผ ์ ์ธํ๋ฉด ์ด๋ป๊ฒ ๋ ๊น์? ์ต๋ช ํด๋์ค๊ฐ ๋ด๋ถ ํด๋์ค๊ฐ ์๋ ์ ์ ์ค์ฒฉ ํด๋์ค๊ฐ ๋ ๊น์? ์ฆ, ์ธ๋ถ ํด๋์ค์ ๋ํ ์ฐธ์กฐ๊ฐ ๋ถ์กฑํ ๊น์?"
"์๋์. ์ต๋ช ์ ๋ด๋ถ ํด๋์ค๊ฐ ๋ ๊ฒ์ ๋๋ค. ์ด ์๋ฅผ ๋ณด์ญ์์ค."
์ต๋ช ์์ ์ผ๋ก | ์ต๋ช ํด๋์ค ์์ด |
---|---|
|
|
|
|
"๊ทธ๋ ๊ตฐ์. ํด๋์ค๊ฐ ์๋๋ผ ์ ์ ๋ณ์๋ง ์ ์ ์ด๊ฒ ์ฃ ."
"๋ค."
"์ค์ ๋ก ์ปดํ์ผ๋ฌ๋ ๋ชจ๋ ์ต๋ช ์ ๋ด๋ถ ํด๋์ค์ ๋ํ ๋ด๋ถ ํด๋์ค๋ฅผ ์์ฑํฉ๋๋ค. ์ด๋ฌํ ํด๋์ค์ ์ด๋ฆ์ ์ผ๋ฐ์ ์ผ๋ก ยซ1ยป, ยซ2ยป, ยซ3ยป ๋ฑ์ผ๋ก ์ง์ ๋ฉ๋๋ค."
GO TO FULL VERSION