"์๋ , ์๋ฏธ๊ณ !"
"์ค๋์ ๊ต์ฐฉ ์ํ๊ฐ ๋ฌด์์ธ์ง ์๋ ค ๋๋ฆฌ๊ฒ ์ต๋๋ค."
"์ด๋ด, ๋น์ ์ ์ด๋ฏธ ๊ทธ๋ฐ ๊ฒ์ ๋ํด ๋์๊ฒ ๋งํ๋ค."
"์, ๊ทธ๋ฌ์ต๋๋ค. ํ์ง๋ง ์ค๋์ ๊ทธ ์ฃผ์ ๋ฅผ ๋ ์์ธํ ์ดํด๋ณด๊ฒ ์ต๋๋ค."
"๊ฐ์ฅ ๊ฐ๋จํ ๊ฒฝ์ฐ ๊ต์ฐฉ ์ํ์๋ ๋ ๊ฐ์ ์ค๋ ๋์ ๋ ๊ฐ์ ๋ฎคํ ์ค ๊ฐ์ฒด๊ฐ ํฌํจ๋ฉ๋๋ค. ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ ์ํธ ์ ๊ธ์ด ๋ฐ์ํฉ๋๋ค."
A) ๊ฐ ์ค๋ ๋๋ ๋ ๋ฎคํ ์ค๋ฅผ ํ๋ํด์ผ ํฉ๋๋ค.
B) ์ฒซ ๋ฒ์งธ ์ค๋ ๋๊ฐ ์ฒซ ๋ฒ์งธ ๋ฎคํ ์ค๋ฅผ ํ๋ํ์ผ๋ฉฐ ๋ ๋ฒ์งธ ๋ฎคํ ์ค๊ฐ ํด์ ๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๊ณ ์์ต๋๋ค.
C) ๋ ๋ฒ์งธ ์ค๋ ๋๊ฐ ๋ ๋ฒ์งธ ๋ฎคํ ์ค๋ฅผ ํ๋ํ์ผ๋ฉฐ ์ฒซ ๋ฒ์งธ ๋ฎคํ ์ค๊ฐ ํด์ ๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๊ณ ์์ต๋๋ค.
"์ฌ๊ธฐ ๋ช ๊ฐ์ง ์๊ฐ ์์ด์:
public class Student
{
private ArrayList friends = new ArrayList();
public synchronized ArrayList getFriends()
{
synchronized(friends)
{
return new ArrayList(friends);
}
}
public synchronized int getFriendsCount()
{
return friends.size();
}
public int addFriend(Student student)
{
synchronized(friends)
{
friends.add(student)
return getFriendsCount ();
}
}
}
"์ค๋ ๋๊ฐ getFriends ๋ฉ์๋๋ฅผ ํธ์ถํ๊ณ ์ด ๊ฐ์ฒด์ ๋ฎคํ ์ค๋ฅผ ํ๋ํ ๋ค์ friend ๊ฐ์ฒด์ ๋ฎคํ ์ค๋ฅผ ํ๋ํ๋ค๊ณ ๊ฐ์ ํฉ๋๋ค."
"ํํธ ๋ ๋ฒ์งธ ์ค๋ ๋๋ addFriend ๋ฉ์๋๋ฅผ ํธ์ถํ๊ณ ์น๊ตฌ ๊ฐ์ฒด์ ๋ฎคํ ์ค๋ฅผ ํ๋ ํ ๋ค์ ์ด ๊ฐ์ฒด์ ๋ฎคํ ์ค๋ฅผ ํ๋ํฉ๋๋ค( getFriendsCount ๋ฅผ ํธ์ถํ๋ ๋์ )."
"์ฒ์์๋ ๋ชจ๋ ๊ฒ์ด ์ ๋๊ฒ ์ง๋ง ๋จธํผ์ ๋ฒ์น์ ๋ฐ๋ฅด๋ฉด ์๋ชป๋ ์ ์๋ ๋ชจ๋ ๊ฒ์ ์๋ชป๋ ๊ฒ์ ๋๋ค. ์ฒซ ๋ฒ์งธ ์ค๋ ๋๊ฐ ํ๋์ ๋ฎคํ ์ค๋ฅผ ํ๋ํ ์๊ฐ๋ง ์๊ณ ๋ ๋ฒ์งธ ์ค๋ ๋๊ฐ ๋ ๋ฒ์งธ ๋ฎคํ ์ค๋ฅผ ํ๋ํ๋ ์ํฉ์ด ํ์ฐ์ ์ผ๋ก ๋ฐ์ํฉ๋๋ค. ๋ฐ๋ก ๊ทธ ์๊ฐ์ ๋ฎคํ ์ค. ๊ทธ๋ค์ ๋ค๋ฅธ ์ค๋ ๋๊ฐ ๋ฎคํ ์ค๋ฅผ ํด์ ํ๊ธฐ๋ฅผ ์์ํ ๊ธฐ๋ค๋ฆฌ๋ฉด์ ๊ทธ๋ ๊ฒ ๋งค๋ฌ๋ฆด ๊ฒ์ ๋๋ค."
"๋๋ ์ฑ ์์ ์ฐพ์ ๋ ๋ค๋ฅธ ๊ฐ๋จํ ์๋ฅผ ์ธ์ฉํ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค."
class KnightUtil
{
public static void kill(Knight knight1, Knight knight2)
{
synchronized(knight1)
{
synchronized(knight2)
{
knight2.live = 0;
knight1.experience += 100;
}
}
}
}
"๋ ๋ช ์ ๊ธฐ์ฌ๊ฐ ์๋ก ์ธ์ฐ๋ ๊ฒ์์ด ์์ต๋๋ค. ํ ๊ธฐ์ฌ๊ฐ ๋ค๋ฅธ ๊ธฐ์ฌ๋ฅผ ์ฃฝ์ ๋๋ค. ์ด ๋์์ kill ๋ฉ์๋์ ๋ฐ์๋ฉ๋๋ค . ๋ ๊ธฐ์ฌ ๊ฐ์ฒด๊ฐ ์ ๋ฌ๋ฉ๋๋ค.
"์ฒซ์งธ, ์ฐ๋ฆฌ๋ ๋ค๋ฅธ ์ฌ๋์ด ๋ณ๊ฒฝํ ์ ์๋๋ก ๋ ๊ฐ์ฒด๋ฅผ ๋ชจ๋ ๋ณดํธํฉ๋๋ค."
"๋ ๋ฒ์งธ ๊ธฐ์ฌ ์ฌ๋ง(HP = 0)"
"์ฒซ ๋ฒ์งธ ๊ธฐ์ฌ๋ 100 XP๋ฅผ ์ป์ต๋๋ค."
"๋ค ๊ด์ฐฎ์ ๋ณด์ด์ง๋ง, ๋ ๋ฒ์งธ ๊ธฐ์ฌ๊ฐ ๋์์ ์ฒซ ๋ฒ์งธ ๊ธฐ์ฌ๋ฅผ ๊ณต๊ฒฉํ๋ ์ํฉ์ด ์์ ์ ์์ต๋๋ค. ์ด ๋ฐฉ๋ฒ์ ๋ ๋ฒ์งธ ๊ธฐ์ฌ์๋ ํธ์ถ๋์ง๋ง ๊ธฐ์ฌ ์ค๋ธ์ ํธ๋ ๋ค๋ฅธ ์์๋ก ์ ๋ฌ๋ฉ๋๋ค."
"๊ต์ฐฉ ์ํ์ ๋น ์ง๊ธฐ ์ํด ์ฌ๋ฌ ๊ฐ์ง ๋ฐฉ๋ฒ์ด ํ์ํ์ง ์๋ค๋ ๋ป์ ๋๊น?"
"๋ง์์. ๋๋ก๋ ํ๋์ ๊ฐ๋จํ ๋ฐฉ๋ฒ๋ง ์์ผ๋ฉด ์ค๋ ๋์ ์ ์ฒด ํ๋ก๊ทธ๋จ์ด ์ค๋จ๋ฉ๋๋ค."
"๋ค, ์๊ฐ๋ณด๋ค ์ด๋ฐ ํ์์ด ์์ฃผ ์ผ์ด๋๋ ๊ฒ ๊ฐ์์. ๊ณ ๋ง์์, ์๋ฆฌ."
GO TO FULL VERSION