Java Plus thread network - accidentlywoo/sec GitHub Wiki
์ดํ๋ฆฌ์ผ์ด์
- ํ๋ก์ธ์ค : ์ดํ๋ฆฌ์ผ์ด์ ์ด ์คํ๋ ์ํ
- ์ค๋ ๋ : ํ๋ก์ธ์ค๋ฅผ ๊ตฌ์ฑํ๋ ์์ ๋จ์
- java.lang.Thread๋ก ์์๋ฐ๊ธฐ
- ์ค๋ ๋๊ฐ ํ ์ผ์ run()๋ฉ์๋์ ์ฌ์ ์ ํ๋ค.
-
<<interface>>Runnable +run():void
-
java.lang.Thread
-run():void
-start():void
์ค๋ ๋ ์์์ ๋ฐ๋์ start() ๋ฉ์๋๋ฅผ ํธ์ถํด์ผ ํ๋ค.
Runnable ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ ๊ตฌํ์ฒด๋, Threadํด๋์ค์ Runnable ๊ตฌํ์ฒด๋ฅผ ๋งค๊ฐ๋ณ์๋ก ๊ฐ๋ ์์ฑ์๋ฅผ ์ฌ์ฉํด์ ๊ตฌํํ๋ค.
java.lang.Thread ์ start() ๋ฉ์๋ ํธ์ถ์ Stack ์์ญ์ Thread Scheduler์์ํด Runnable์ํ๋ก ๊ฐ์ฒด ์ด๋ํ๋ค.Thread Scheduling๋จ
Runnable์์ญ์์๋ ์ฐ์ ์์(JVM์ Thread๋ฅผ Priority๋ฐฉ์๊ณผ Round-Robin๋ฐฉ์์ ์ฌ์ฉ)๋ก์ ๋ฐ๋ผ ์์ธ๋ค. ์ฐ์ ์์ ๋ด๋ถ์์ Queue์๋ฃ๊ตฌ์กฐ๋ก ์์ธ๋ค.
์์๊ฐ ๋์ Run์ํ๋ก ๋ค์ด์ฌ๋, java.lang.Thread run() ์ด ํธ์ถ๋๋ค. : CPU์ ์ ์ํ : CPU์ ์ ๋ OS์ CPU์๋ฐ๋ผ ๋ค๋ฅด๋ค. Runnable๊ณผ Run ๋ฉ์๋๋ฅผ ์๋ค๊ฐ๋ค ํ ์ ์๋ค.(ex>Time Slicing)
Run์ํ์์ ๋ชจ๋ ์ฒ๋ฆฌ๋ฅผ ์๋ฃํ์ ๋(run()์ข ๋ฃ), Dead ์ํ๋ก ์ด๋ํ๋ค. ๊ฐ์ฒด๋ ๋ณด์ ๋๊ณ Thread Scheduling์์ ๋ฒ์ด๋๋ค.
Object์์ ์ ์ธ๋ Method ๋ค์ด๋ค. wait()๋
- wait(milliSeconds,..) : milliSeconds๋งํผ ํ์ฌ ์ฐ๋ ๋๋ฅผ ์ผ์์ค์ง
- wait() : ํ์ฌ ์ฐ๋ ๋๋ฅผ ์ผ์ ์ค์ง์ํค๊ณ , ๊ณต์ ์์์ ์ฌ์ฉํ๋ ๋ค๋ฅธ Thread๊ฐ ์ผ์์ค์ง๋ ์ฐ๋ ๋๋ฅผ notify()๋ฅผ ํธ์ถํด์ค์ผ Runnable์ํ๋ก ๊ฐ ์ ์๋ค.
wait()์ํ์ ์ฐ๋ ๋๊ฐ ์ฌ๋ฌ๊ฐ์ด๋ฉด, notify()๋ก runnable์ํ๋ก ๋ณ๊ฒฝ๋๋ ์ฐ๋ ๋์ ์์๋ Queue๊ตฌ์กฐ์ธ๊ฒ๊ฐ๋ค.(๋ช ์๋ ์ํ์ง๋ง FIFO์ด๋ค)
wait(), notify() ๋ synchronozed๊ตฌ๋ฌธ ๋ด์์ ์ฌ์ฉ๋๋ค. -> ๊ณต์ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๋ Thread์ฌ์ผ ํ๋ค.
Vector - ArrayList ๋ List์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ ์ฝ๋ ์ ํจํค์ง์ ์น๊ตฌ๋ค์ด๋ค. ์ฐจ์ด์ ์
Vector๋ ์ฐ๋ ๋์ ๋๊ธฐํ์ฒ๋ฆฌ๊ฐ ๋์ด์๊ณ , ArrayList๋ ์ฐ๋ ๋์ ๋๊ธฐํ ๋์ด์์ง๋ง๋ค.
๋๊ธฐํ ์ฒ๋ฆฌ๋ฅผ ArrayList๋ฅผ ์ฌ์ฉํด ๋ณต์กํ๊ฒ ์ฒ๋ฆฌ๋ฅผ ํ๋ ๊ฒ ๋ณด๋ค, Vector๋ฅผ ์ฌ์ฉํด ๋๊ธฐํ๋ฅผ ๊ตฌํํ๋ ๊ฒ์ด ์์ ์ฑ๊ณผ ์ฑ๋ฅ์ ์ข๋ค.
๊ฐ์ฒด ํต์ ์์ ๊ฐ์ฒด ์ง๋ ฌํ / ์ญ์ง๋ ฌํ์ ๋ค์ด๋๋ฏน ํด๋์ค ๋ก๋. ๋ฆฌํ๋ ์ ๊ฐ๋ ์ด ํ์ํ๋ค.
์ญ์ง๋ ฌํ ๊ณผ์
- ํด๋นํด๋์ค๋ฅผ ์ฐพ๋๋ค.
- JVM์ ๋ค์ด๋๋ฏน ํด๋์ค ๋ก๋ฉ
- ๋ฐ์ดํธ ์ฝ๋ ๊ฒ์ฆ
- ์ธํฐํ๋ฆฌํธ