๐ ์ค๋์ ์ค๋ ๋์ ๋๊ธฐํ์ ๋ํด ์ ์ด ๋ณด๋ ค๊ณ ํ๋ค.๐ง ๋ ์์ธํ ๋ด์ฉ์ ์ถํ์ ์ถ๊ฐ ํ ์ ์๋๋ก ํด์ผ๊ฒ ๋ค.
๋ฉํฐ์ค๋ ๋๋ฅผ ์ด์ฉํ๋ ํ๋ก๊ทธ๋จ์์ ์ค๋ ๋ 2๊ฐ ์ด์์ด ๊ณต์ ๋ฐ์ดํฐ(stack์ ์ ์ธํ ๋ฉ๋ชจ๋ฆฌ ์์ญ)์ ์ ๊ทผํ ๊ฒฝ์ฐ ๋ค์ํ ๋ฌธ์ ๊ฐ ์๊ธธ ์ ์๋๋ฐ, ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ์ผ๋ จ์ ์์
๋ค์ ์ค๋ ๋ ๋๊ธฐํ๋ผ๊ณ ํ๋ค.
์ค๋ ๋ ๋๊ธฐํ๋ฅผ ์ํด์ ์๊ณ์์ญ๊ณผ ๋ฝ์ ์ฌ์ฉํ๋ค.
๋ฎคํ
์ค(mutex): ๊ณต์ ์์์ด๋ ์๊ณ์์ญ์ ๋ํด ํ๋์ ํ๋ก์ธ์ค ๋๋ ์ค๋ ๋๋ง ์ ๊ทผ ํ๋๋ก ํ์ฉ(๋๊ธฐํ ๋์์ด ํ๊ฐ)
์ค๋ ๋๋ค์ ์คํ์๊ฐ์ด ์๋ก ๊ฒน์น์ง ์๊ฒ ๋จ๋
์ผ๋ก ์คํ๋๋ฉฐ, ์ด๋ฅผ ์ํธ๋ฐฐ์ (Mutual Exclution)๋ผ๊ณ ํ๋ค.
์ธ๋งํฌ์ด(semaphore): ๊ณต์ ์์์ด๋ ์๊ณ์์ญ์ ๋ํด ์ฌ๋ฌ ํ๋ก์ธ์ค๋ ์ค๋ ๋๊ฐ ์ ๊ทผํ๋ ๊ฒ์ ์ ํ(๋๊ธฐํ ๋์์ด ํ๊ฐ ์ด์)
์ธ๋งํฌ์ด์ ๋ํ ์ฐ์ฐ์ ์ฒ๋ฆฌ ๋์ค์ ์ธํฐ๋ฝํธ ๋์ด์๋ ์๋๋ฉฐ, ์ธ๋งํฌ์ด ์๊ณ ๋ฆฌ์ฆ์ P(wait)์ฐ์ฐ๊ณผ V(signal)์ฐ์ฐ์ ์ฌ์ฉํ๋ค. V ์ฐ์ฐ์ ํ์ ๋๊ธฐ ์ค์ธ ํ๋ก์ธ์ค๋ฅผ ๊นจ์ฐ๋ ์ ํธ์ด๋ฉฐ, P ์ฐ์ฐ์ ํ๋ก์ธ์ค๋ค์ด ์๊ณ์์ญ์ ์ฌ์ฉํ๋ ค๊ณ ํ ๋ ์ง์
์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํ๋ ์กฐ์์ด๋ค.
์ด๋ฒคํธ(event): ์คํ ์์๋ฅผ ๋๊ธฐํ ํ๋ค.
์๋ฐ์์๋ synchronized๋ฅผ ์ฌ์ฉํ์ฌ ์๊ณ์์ญ์ ์ง์ ํ๋ค.
public synchronized void Method() {
}
public void normalMethod() {
synchronzied(/* ๋๊ธฐํํ ๊ฐ์ฒด ๋๋ ํด๋์ค๋ช
*/) { }
}