Thread
Last updated
Last updated
Process๋ ์คํ ์ค์ธ ํ๋ก๊ทธ๋จ์ด๋ค.
Thread๋ ํ๋์ ์์ ๋จ์์ด๋ค ์ง๊ธ๊น์ง, Java Main์ ๊ธฐ์ค์ผ๋ก ์์ฐจ์ ์ผ๋ก ์คํ๋๊ฒ ์ฝ๋๋ฅผ ์งฏ๋ค๋ฉด, Main Thread๋ฅผ ๊ธฐ์ค์ผ๋กํ Single Thread Proccess์ด๋ค
Thread๊ฐ ๋ ์ด์์ธ ํ๋ก๊ทธ๋จ์ ๋ฉํฐ ์ฐ๋ ๋ ํ๋ก์ธ์ค๋ผ๊ณ ํ๋ค. CPU๊ฐ ๋ฒ๊ฐ์ ๊ฐ๋ฉฐ Thread๋ค์ ์คํํ์ฌ, ์ฌ๋ฌ๊ฐ๊ฐ ์กด์ฌํ๋ ๊ฒ ์ฒ๋ผ ๋ณด์ด๊ฒ ํด์ค๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก Thread๋ฅผ ์ถ๊ฐํ๋ ๋ฐฉ๋ฒ์ Thread, Runnable์ ์ฌ์ฉํ๋ ๋ฐฉ์์ด๋ค.
extendํ๋ ๋ฐฉ์์ ์ข์ํ์ง ์๊ธฐ๋๋ฌธ์ Thread๋ฅผ์ถ์ฒํ์ง๋ ์๋๋ค
Thread๊ด๋ จ ์์ ๋ ์ ๋ถ ์๋์ ์๋ ํ๋ฆฐํฐ ๊ตฌํ์ ๊ธฐ๋ฐ์ผ๋ก ์ค๋ช ํ ์์ ์ด๋ค.
๋ชจ๋ ์์ ์ Expect์ ์ ํ์๋ ์์๋ก ์งํ ๋์ด์ผ ํ๋ค.
Thread๋ฅผ ์ฌ์ฉํ์ฌ ์ ๋์์ ๊ตฌํํด๋ณด๋๋ก ํ๋ค
ํ์ง๋ง ๊ฒฐ๊ณผ๋ blokcing ๋์ด 1 2 3 4 5 ๊ฐ ์์๋๋ก ์คํ๋์ง ์์๊ณ . ์ถ๊ฐ์ ์ธ ์์ ์ด ํ๋ฆฐํธ์์ถ๊ฐ๊ฐ ๋์ง ์์๋ค
Run()์ Thread์ ์์ ์ ๊ธฐ๋ค๋ฆฌ๊ณ ์๋ค๋ ๊ฒ์ ์ ์ ์๋ค. (= ์ฑ๊ธ ์ค๋ ๋๋ก ๋์ํ๋ค )
Main์ scheduler.run(); => scheduler.start();
๋ก ๋ฐ๊พผ๋ค ๋ค์ ์คํํด์ค๋ค
์ถ๊ฐํ ์์ ๋ ์ฒ๋ฆฌ๋์์ง๋ง ํ๋ฆฐํฐ๊ฐ ๋๊ณ ์๋๋ฐ 5(printer stop)์ด ๋์จ๊ฒ์ ์ ์์๋ค.
๋ชจ๋ ์์
(Thread)๋ ์ํ(state)๋ฅผ ๊ฐ์ง๊ณ ์๋ค.
Thread.currentThread().getState()
๋ก ํ์ฌ ๊ตฌ๋์ค์ธ ( ์์
์ค์ธ ) Thread์ ์ํ๋ฅผ ๊ฐ์ ธ ์ฌ ์์๋ค.
TYPE | DESCRIPTION |
---|---|
NEW | Thread๊ฐ ์์ฑ๋ ํ, ์์ ๋๊ธฐ์ํ |
RUNNABLE | ์์ ์งํ์ค์ธ ์ํ |
BLOCKED | ๋ฝ์ด๋์ด ์๋ ์ํ |
WAITING | ๋ค๋ฅธ ์ค๋ ๋์ํต์ง๋ฅผ๊ธฐ๋ค๋ฆฌ๋ ์ํ |
TIME_WATING | ์๊ฐ ๋งํผ์ ๋๊ธฐ |
TERMINATED | ์์ ๋ง์น ์ํ |
์ด๊ฒ์ ์ด์ฉํ์ฌ ํ๋ฆฐํธ ์ค์ผ์ค๋ฌ๊ฐ ์ข ๋ฃ ๋์๋์ง๋ฅผ ํ์ธํ๋ค.\
PrintScheduler
์ ์์
์ ํ์ธํ ์ ์๋๋ก Thread์ ์ํ๋ฅผ ๋ฐ์์ฌ ์ ์๋๋ก ์ถ๊ฐ
Main
์ ์ํ๋ฅผ ํ์ธํ ํ Main์ ์ข
๋ฃํ ์ ์๋๋ก ์ถ๊ฐ
์ ์์ ์ผ๋ก Printer๊ฐ ์ข ๋ฃ๋์์์ ์ ์์๋ค.