
๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋น๋ฐ์ ์คํ ์ค์ธ ํ๋ก๊ทธ๋จ
ํ๋ก์ธ์ค ๋ด์์ ์ค์ ๋ก ์์ ์ ์ํํ๋ ์ฃผ์ฒด
java.lang.Runnable ์ธํฐํ์ด์ค๋ก๋ถํฐ run() ๋ฉ์๋๋ฅผ ๊ตฌํํ์ฌ ์์ฑ
java.lang.Thread ํด๋์ค๋ฅผ ์์ ๋ฐ์์ run() ๋ฉ์๋ ์ค๋ฒ๋ผ์ด๋ฉ
** run(): ์คํํ ์ฝ๋ ์์ฑ
| ์ํ | ์ค๋ช |
|---|---|
NEW | ์ค๋ ๋๊ฐ ์์ฑ๋์์ง๋ง ์ค๋ ๋๊ฐ ์์ง ์คํํ ์ค๋น๊ฐ ๋์ง ์์ ์ํ |
RUNNABLE | ์ค๋ ๋๊ฐ ์คํ๋๊ณ ์๊ฑฐ๋ ์คํ ์ค๋น๋์ด ์ค์ผ์ฅด๋ง์ ๊ธฐ๋ค๋ฆฌ๋ ์ํ |
WAITING | ๋ค๋ฅธ ์ค๋ ๋๊ฐ notify(), notifyAll() ์ ๋ถ๋ฌ์ฃผ๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ์ํ(๋๊ธฐํ) |
TIMED_WAITING | ์ค๋ ๋๊ฐ sleep(n) ํธ์ถ๋ก ์ธํด n ๋ฐ๋ฆฌ์ด ๋์ ์ ์ ์๊ณ ์๋ ์ํ |
BLOCK | ์ค๋ ๋๊ฐ I/O ์์ ์ ์์ฒญ ์ ์์ ์ข ๋ฃ ์ ๊น์ง ๊ธฐ๋ค๋ฆฌ๊ณ ์๋ ์ํ |
TERMINATED | ์ค๋ ๋๊ฐ ์ข ๋ฃํ ์ํ |
2๊ฐ ์ด์์ ์ค๋ ๋๊ฐ ๋์ ์ค์ผ ๋, ์ฐ์ ์์๋ฅผ ๋ถ์ฌํ์ฌ ๋์ ์ค๋ ๋์๊ฒ ์คํ ์ฐ์ ๊ถ์ ๋ถ์ฌ
์ฌ๋ฌ ๊ฐ์ ์ค๋ ๋๊ฐ ๋์์ ์ํ
Dead Lock ์ ๋ง๋ค ์ ์์.โsynchronized method : ํ ์๊ฐ์ ํ๋์ ์ค๋ ๋๋ง์ ์คํํ ์ ์๋ ๋ฉ์๋
๐๐ผ ํ ์ค๋ ๋๊ฐ synchronized method ๋ฅผ ์ํ ์ค์ด๋ฉด ๋ค๋ฅธ ์ค๋ ๋๋ ๋๊ธฐํจ.
โํ๋ก์ธ์ค๋ ๋
๋ฆฝ์ ์ด๊ธฐ ๋๋ฌธ์ ํ๋ก์ธ์ค ๊ฐ ์์ ๋ฐ ๋ฐ์ดํฐ๋ฅผ ๊ณต์ ํ๊ธฐ ์ด๋ ค์. ๋ฐ๋ฉด, ํ๋ก๊ทธ๋จ ๋ด์ ์ค๋ ๋๋ ์๋ก ๋
๋ฆฝ์ ์ด์ง ์์ผ๋ฉฐ ์์
๊ณต๊ฐ์ ๊ฐ์ด ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์์ ๋ฐ ๋ฐ์ดํฐ๋ฅผ ๊ณต์ ํ ์ ์์. ๋ฐ๋ผ์, ์ค๋ ๋ ๊ฐ ๋ฐ์ดํฐ ์ ์ก์ด ํ์ํ ๊ฒฝ์ฐ ์๊ฐ ๋ฐ ์์ ์์๊ฐ ์ ์.
๐ ํ๋ก์ธ์ค๋ณด๋ค ์ค๋ฒํค๋๊ฐ ์ ๋ค๋ ๊ฒ์ด ์ฅ์ !!
๊ณต์ ์์์ ์ ๊ทผํ๋ ๋ฉ์๋์ ์์
synchronized๋ฉ์๋๋ก ์ง์
| ์์ฑ์ | ๋งค๊ฐ๋ณ์ |
|---|---|
Thread() | - |
Thread(String s) | ์ค๋ ๋ ์ด๋ฆ |
Thread(Runnable r) | ์ธํฐํ์ด์ค ๊ฐ์ฒด |
Thread(Runnable r, String s) | ์ธํฐํ์ด์ค ๊ฐ์ฒด์ ์ค๋ ๋ ์ด๋ฆ |
| ๋ฉ์๋ | ์ค๋ช |
|---|---|
static void sleep(long msec) throws InterruptedException | msec์ ์ง์ ๋ ๋ฐ๋ฆฌ์ด ๋์ ๋๊ธฐ |
String getName() | ์ค๋ ๋ ์ด๋ฆ ๋ฐํ |
void setName(String s) | ์ค๋ ๋ ์ด๋ฆ์ s๋ก ์ค์ |
void start() | ์ค๋ ๋๋ฅผ ์์ run() ๋ฉ์๋ ํธ์ถ |
int getPriority() | ์ค๋ ๋์ ์ฐ์ ์์๋ฅผ ๋ฐํ |
void setPriority(int p) | ์ค๋ ๋์ ์ฐ์ ์์๋ฅผ p ๊ฐ์ผ๋ก ์ค์ |
boolean isAlive() | ์ค๋ ๋๊ฐ ์์๋์๊ณ , ์์ง ๋๋์ง ์์์ผ๋ฉด T, ๋๋ฌ์ผ๋ฉด F ๋ฐํ |
void join() throws InterruptedException | ์ค๋ ๋๊ฐ ๋๋ ๋๊น์ง ๋๊ธฐ |
void run() | ์ค๋ ๋๊ฐ ์คํํ ๋ถ๋ถ ์ค๋ฒ๋ผ์ด๋ฉ |
void suspend() | ์ค๋ ๋๊ฐ ์ผ์์ ์ง resume()์ ์ํด ๋ค์ ์์ |
void resume() | ์ผ์ ์ ์ง๋ ์ค๋ ๋๋ฅผ ๋ค์ ์์ |
void yield() | ๋ค๋ฅธ ์ค๋ ๋์๊ฒ ์คํ ์ํ๋ฅผ ์๋ณดํ๊ณ , ์ค๋น ์ํ๋ก ๋ณ๊ฒฝ |
๋ฐฑ๊ทธ๋ผ์ด๋ Thread๋ก ์คํ๋๋ ์ผ์ 1ํ ๋๋ ์ ๊ธฐ์ ์ผ๋ก ๋ฐ๋ณต ์คํ๋๋๋ก ์ค์ผ์ฅด๋ง ํด์ฃผ๋ ํด๋์ค
| ์์ฑ์ | ๋งค๊ฐ๋ณ์ |
|---|---|
Timer() | - |
Timer(boolean isDaemon) | daemon์ผ๋ก ์คํ๋๋ ํ์ด๋จธ |
Timer(String name) | ์ง์ ๋ ์ด๋ฆ์ thread๋ฅผ ๊ฐ์ง๋ ํ์ด๋จธ |
Timer(String name, booelan isDaemon) | ์ง์ ๋ ์ด๋ฆ์ thread๋ฅผ ๊ฐ์ง๋ ์๋ก์ด ํ์ด๋จธ |
| ๋ฉ์๋ | ์ค๋ช |
|---|---|
| void cancel() | ํ์ฌ ์ค์ผ์ค๋ง ์ข ๋ฃ |
| void schedule(TimerTask task, Date time) | ์ง์ ํ ์๊ฐ์ผ๋ก ์ง์ ํ ํ์คํฌ๊ฐ ์คํ๋๋๋ก ์ค์ผ์ค ์ค์ |
| void schedule(TimerTask task, Date firstTime, long period) | ์ง์ ํ ํ์คํฌ๋ฅผ ์ง์ ํ ์๊ฐ์ ์คํ๋๊ณ , ๊ธฐ๊ฐ์ ๊ฐ์ง๊ณ ๋ฐ๋ณต |
| void schedule(TimerTask task, long delay) | ์ง์ ํ ์๊ฐ์ ์ง์ฐ ํ์ ์ง์ ํ ํ์คํฌ๋ฅผ ์คํ |