๋ฐ์ํ
๐ก wait() & notify()
๋๊ธฐํ์ ๋จ์ ์ธ ๋นํจ์จ์ฑ(ํ๋ฒ์ ํ๊ฐ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ์)์ ๋ณด์ํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ค.
Objectํด๋์ค์ ์ ์๋์ด ์์ผ๋ฉฐ, ๋๊ธฐํ ๋ธ๋ก ๋ด์์๋ง ์ฌ์ฉํ ์ ์๋ค.
- wait()
- ๊ฐ์ฒด์ lock์ ํ๊ณ , ์ฐ๋ ๋๋ฅผ ํด๋น ๊ฐ์ฒด์ waiting pool์ ๋ฃ๋๋ค.
- ๊ฐ์ฒด์ lock์ ํ๊ณ , ์ฐ๋ ๋๋ฅผ ํด๋น ๊ฐ์ฒด์ waiting pool์ ๋ฃ๋๋ค.
- notify()
- waiting pool์์ ๋๊ธฐ์ค์ธ ์ฐ๋ ๋ ์ค ํ๋๋ฅผ ๊นจ์ด๋ค.
- waiting pool์์ ๋๊ธฐ์ค์ธ ์ฐ๋ ๋ ์ค ํ๋๋ฅผ ๊นจ์ด๋ค.
- notifyAll()
- waiting pool์์ ๋๊ธฐ์ค์ธ ๋ชจ๋ ์ฐ๋ ๋๋ฅผ ๊นจ์ด๋ค.
- ์ผ๋ฐ์ ์ผ๋ก๋ notify()๋ณด๋ค notifyAll()์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค.
์์
๋ด์ฉ์ด ์ด๋ ค์ ๋๋ฐ notify()๊ฐ ๋๊ธฐ์ค์ธ ์ฐ๋ ๋ ์ค ํ๋๋ฅผ ๊นจ์ฐ๋ ๊ฒ์ด๋ผ๋ ๊ฑธ ๋ ์ฌ๋ฆฌ๋ ์ดํด๊ฐ ์ฌ์ ์ต๋๋ค.
ํ ์ด๋ธ์์ ์์์ ์ถ๊ฐํ ๋ while (dishes.size() >= MAX_FOOD) { ํ ์ด๋ธ์ด ๊ฝ ์ฐจ๋ฉด ๋ค๋ฅธ ์ฐ๋ ๋๋ฅผ ์คํํ๊ฒ ํฉ๋๋ค.
ํ ์ด๋ธ์์ ์์์ ์น์ฐ๋ คํ๋๋ฐ while (dishes.size() == 0) { ์ ์๊ฐ ์์ผ๋ฉด ๋ ๊ธฐ๋ค๋ฆฌ๊ณ ๋ค๋ฅธ ์ฐ๋ ๋๋ฅผ ์คํํ๊ฒ ํฉ๋๋ค.
ํ๋ง๋๋ก ์ง๊ธ ์คํ์ค์ธ ์ฐ๋ ๋๋ฅผ ๋๊ธฐ ์ํค๊ณ ๋ค๋ฅธ ์ฐ๋ ๋๋ค ์ค ์๋ฌด๋ ์ผํ๋ผ๋ฉด์ ์ ๋ฌ์ ์ ๋ฌ์ ํ๋ ๊ฒ์ ๋๋ค.
๋ฐ์ํ
'โ JAVA > โ Class & Method' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JAVA]๋ฉ์๋ ์ฐธ์กฐ method reference (0) | 2024.12.12 |
---|---|
[JAVA]Predicate ๊ฒฐํฉ, Function ๊ฒฐํฉ (0) | 2024.12.12 |
[JAVA][Thread]๋๊ธฐํ synchronization (1) | 2024.12.09 |
[JAVA][Thread]join() & yield() (0) | 2024.12.09 |
[JAVA][Thread]suspend() resume() stop(). ์ผ์์ ์ง, ์ฌ๊ฐ, ์์ ์ ์ง (0) | 2024.12.06 |