"рд╣рд╛рдп, рдЕрдореАрдЧреЛ!"
"рдЖрдЬ рдореИрдВ рдЖрдкрдХреЛ рдмрддрд╛рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдБ рдХрд┐ рдЧрддрд┐рд░реЛрдз рдХреНрдпрд╛ рд╣реИред"
"рдЕрд░реЗ, рдЖрдкрдиреЗ рдореБрдЭреЗ рдкрд╣рд▓реЗ рд╣реА рдРрд╕рд╛ рдХреБрдЫ рдмрддрд╛рдпрд╛ рд╣реИред"
"рд╣рд╛рдБ, рдореИрдВрдиреЗ рдХрд┐рдпрд╛ рдерд╛ред рд▓реЗрдХрд┐рди рдЖрдЬ рд╣рдо рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗред"
"рд╕рдмрд╕реЗ рд╕рд░рд▓ рдорд╛рдорд▓реЗ рдореЗрдВ, рдбреЗрдбрд▓реЙрдХ рдореЗрдВ рджреЛ рдзрд╛рдЧреЗ рдФрд░ рджреЛ рдореНрдпреВрдЯреЗрдХреНрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рд╢рд╛рдорд┐рд▓ рд╣реЛрддреЗ рд╣реИрдВред рдПрдХ рдкрд╛рд░рд╕реНрдкрд░рд┐рдХ рд▓реЙрдХ рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм:"
рдП) рдкреНрд░рддреНрдпреЗрдХ рдереНрд░реЗрдб рдХреЛ рджреЛрдиреЛрдВ рдореНрдпреВрдЯреЗрдХреНрд╕ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
рдмреА) рдкрд╣рд▓реЗ рдзрд╛рдЧреЗ рдиреЗ рдкрд╣рд▓реЗ рдореНрдпреВрдЯреЗрдХреНрд╕ рдХрд╛ рдЕрдзрд┐рдЧреНрд░рд╣рдг рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рджреВрд╕рд░реЗ рдХреЗ рд░рд┐рд▓реАрдЬ рд╣реЛрдиреЗ рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░ рд░рд╣рд╛ рд╣реИред
рд╕реА) рджреВрд╕рд░реЗ рдзрд╛рдЧреЗ рдиреЗ рджреВрд╕рд░реЗ рдореНрдпреВрдЯреЗрдХреНрд╕ рдХрд╛ рдЕрдзрд┐рдЧреНрд░рд╣рдг рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдкрд╣рд▓реЗ рд░рд┐рд▓реАрдЬ рд╣реЛрдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣рд╛ рд╣реИред
"рдпрд╣рд╛рдВ рдХреБрдЫ рдЙрджрд╛рд╣рд░рдг рджрд┐рдП рдЧрдП рд╣реИрдВ:
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 рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдореНрдпреВрдЯреЗрдХреНрд╕ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рдлреНрд░реЗрдВрдбреНрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдореНрдпреВрдЯреЗрдХреНрд╕ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред"
"рдЗрд╕ рдмреАрдЪ, рдПрдХ рджреВрд╕рд░рд╛ рдереНрд░реЗрдб рдРрдбрдлреНрд░реЗрдВрдб рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ, рдлреНрд░реЗрдВрдбреНрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдореНрдпреВрдЯреЗрдХреНрд╕ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдореНрдпреВрдЯреЗрдХреНрд╕ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ (рдХреЙрд▓ рдХреЗ рджреМрд░рд╛рди getFriendsCount )ред"
"рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реЛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рдЬреИрд╕рд╛ рдХрд┐ рдорд░реНрдлреА рдХрд╛ рдХрд╛рдиреВрди рдХрд╣рддрд╛ рд╣реИ: рдЬреЛ рдХреБрдЫ рднреА рдЧрд▓рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рд╡рд╣ рдЧрд▓рдд рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдЙрддреНрдкрдиреНрди рд╣реЛрдЧреА рдЬрд╣рд╛рдВ рдкрд╣рд▓реЗ рдзрд╛рдЧреЗ рдХреЗ рдкрд╛рд╕ рдХреЗрд╡рд▓ рдПрдХ рдореНрдпреВрдЯреЗрдХреНрд╕ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реЛрдЧрд╛, рдФрд░ рджреВрд╕рд░рд╛ рдзрд╛рдЧрд╛ рджреВрд╕рд░реЗ рдХрд╛ рдЕрдзрд┐рдЧреНрд░рд╣рдг рдХрд░реЗрдЧрд╛ рдореНрдпреБрдЯреЗрдХреНрд╕ рдЙрд╕реА рдХреНрд╖рдгред
"рдореИрдВрдиреЗ рдПрдХ рдХрд┐рддрд╛рдм рдореЗрдВ рдорд┐рд▓реЗ рдПрдХ рдФрд░ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдЙрджреНрдзреГрдд рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рд╣реИ:"
class KnightUtil
{
public static void kill(Knight knight1, Knight knight2)
{
synchronized(knight1)
{
synchronized(knight2)
{
knight2.live = 0;
knight1.experience += 100;
}
}
}
}
"рдПрдХ рдЦреЗрд▓ рд╣реИ рдЬрд╣рд╛рдБ рджреЛ рд╢реВрд░рд╡реАрд░ рдПрдХ рджреВрд╕рд░реЗ рд╕реЗ рд▓рдбрд╝ рд░рд╣реЗ рд╣реИрдВред рдПрдХ рд╢реВрд░рд╡реАрд░ рджреВрд╕рд░реЗ рдХреЛ рдорд╛рд░рддрд╛ рд╣реИред рдпрд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рдорд╛рд░ рд╡рд┐рдзрд┐ рдореЗрдВ рдкрд░рд┐рд▓рдХреНрд╖рд┐рдд рд╣реЛрддрд╛ рд╣реИред рдЗрд╕рдореЗрдВ рджреЛ рд╢реВрд░рд╡реАрд░ рд╡рд╕реНрддреБрдПрдБ рджреА рдЬрд╛рддреА рд╣реИрдВред
"рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рджреЛрдиреЛрдВ рд╡рд╕реНрддреБрдУрдВ рдХреА рд░рдХреНрд╖рд╛ рдХрд░рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдХреЛрдИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдмрджрд▓ рди рд╕рдХреЗред"
"рджреВрд╕рд░рд╛ рдирд╛рдЗрдЯ рдорд░ рдЬрд╛рддрд╛ рд╣реИ (рдПрдЪрдкреА = 0)"
"рдкрд╣рд▓рд╛ рд╢реВрд░рд╡реАрд░ 100 XP рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред"
"рд╕рдм рдХреБрдЫ рдареАрдХ рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдРрд╕реА рд╕реНрдерд┐рддрд┐рдпрд╛рдБ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ рдЬрд╣рд╛рдБ рджреВрд╕рд░рд╛ рд╢реВрд░рд╡реАрд░ рдкрд╣рд▓реЗ рдкрд░ рдЙрд╕реА рд╕рдордп рд╣рдорд▓рд╛ рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рд╡рд┐рдзрд┐ рдХреЛ рджреВрд╕рд░реЗ рд╢реВрд░рд╡реАрд░ рдХреЗ рд▓рд┐рдП рднреА рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╢реВрд░рд╡реАрд░ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдПрдХ рдЕрд▓рдЧ рдХреНрд░рдо рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред"
"рдЖрдкрдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдбреЗрдбрд▓реЙрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдХрдИ рддрд░реАрдХреЛрдВ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ?"
"рдареАрдХ рд╣реИред рдХрднреА-рдХрднреА рдереНрд░реЗрдбреНрд╕ рдФрд░ рдкреВрд░реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рд╣реИрдВрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдПрдХ рд╕рд░рд▓ рд╡рд┐рдзрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред"
"рд╣рд╛рдБ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдШрдЯрдирд╛ рдореЗрд░реЗ рд╡рд┐рдЪрд╛рд░ рд╕реЗ рдХрд╣реАрдВ рдЕрдзрд┐рдХ рдмрд╛рд░ рдШрдЯрд┐рдд рд╣реЛрддреА рд╣реИред рдзрдиреНрдпрд╡рд╛рдж, рдРрд▓реАред"