"์๋ , ์๋ฏธ๊ณ !"
"๊ต์ฐฉ ์ํ๋ฅผ ํผํ๊ธฐ ์ํ ๋ช ๊ฐ์ง ์ ๋ต์ ๋ํด ๋ง์๋๋ฆฌ๊ณ ์ถ์ต๋๋ค."
"๊ฐ์ฅ ์ข์ ์ ๋ต์ ์ฌ๋ ค ๊น์ ์ํคํ ์ฒ์ ์ ๊ธ์ ์ฌ์ฉํ ์ ์๋ ์๊ธฐ์ ์์(๋ฎคํ ์ค ํ๋)๋ฅผ ๊ด๋ฆฌํ๋ ์ผ๋ จ์ ๊ท์น์ ๋๋ค. ๋ฌธ์ ์ ๋ํ ๊ณ ์ ์ ์ธ ์ ๊ทผ ๋ฐฉ์์ ์ ๊ธ ๊ณ์ธต์ ๊ฐ๋ฐํ๊ณ ํน์ ์ ๊ธ์ด ์ ๋ ํด์ ๋ ์ ์๋ ๊ท์น์ ์ค์ ํ๋ ๊ฒ์ ๋๋ค. ํน์ ๋ค๋ฅธ ์ ๊ธ์ด ์ด๋ฏธ ํ๋๋ ์ํ์์ ํ๋๋์์ต๋๋ค."
"์๋ฅผ ๋ค์ด ์ ๊ธ์ ๋ ๋ฒจ์ด ํ ๋น๋๋ ๊ฒฝ์ฐ๊ฐ ์์ผ๋ฉฐ ์ค๋ ๋๋ ๋์ ๋ ๋ฒจ์์ ๋ฎ์ ๋ ๋ฒจ๋ก ์์๋๋ก ์ ๊ธ์ ํ๋ํด์ผ ํฉ๋๋ค(๋จ, ๋ค๋ฅธ ๋ฐฉํฅ์ผ๋ก ์ ๊ธ์ ํ๋ํ๋ ๊ฒ์ ํ์ฉ๋์ง ์์). ๋ํ ๋์ผํ ๋ ๋ฒจ์ ์ ๊ธ์ ์ฌ๋ฌ ๊ฐ ํ๋ํ๋ ๊ฒ์ ํ์ฉ๋์ง ์์ต๋๋ค. ํ์ฉ๋."
"์๋ฅผ ๋ค์ด ๊ธฐ์ฌ์ ๋ํ ์ด์ ์์์ ๊ฐ ๊ธฐ์ฌ์ ๊ณ ์ ๋ฒํธ(id)๋ฅผ ์ถ๊ฐํ๊ณ ๋ ํฐ id์์ ๋ ์์ id๋ก ์ ๊ธ์ ํ๋ํ๋๋ก ์๊ตฌํ ์ ์์ต๋๋ค."
class KnightUtil
{
public static void kill(Knight knight1, Knight knight2)
{
Knight knightMax = knight1.id > knight2.id ? knight1: knight2;
Knight knightMin = knight1.id > knight2.id ? knight2: knight1;
synchronized(knightMax)
{
synchronized(knightMin)
{
knight2.live = 0;
knight1.experience +=100;
}
}
}
}
"๊ทธ๊ฑด ์๋ฆ๋ค์ด ํด๊ฒฐ์ฑ ์ด๊ตฐ์."
"๋งค์ฐ ๊ฐ๋จํ ์๋ฃจ์ ์ด์ง๋ง ๋ง์์ ๋ญ๋๋ค. ์ ์ฌ์ ์ธ ๊ต์ฐฉ ์ํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ์๊ฐํ ๋ ๋์์ด ๋์์ผ๋ฉด ํฉ๋๋ค."
"๊ณ ๋ง์, ์๋ฆฌ."
GO TO FULL VERSION