рд╕рднреА рдХреЛ рдирдорд╕реНрдХрд╛рд░!
рд╣рдо
рдЬрд╛рд╡рд╛ рдбреЗрд╡рд▓рдкрд░ рдкрд╛рдареНрдпрдХреНрд░рдо рдХреА рд╕рд╛рддрд╡реАрдВ рдзрд╛рд░рд╛ рд╢реБрд░реВ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдЗрд╕ рдкрд╛рдареНрдпрдХреНрд░рдо рдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдХреЗ рдПрдХ рд╡рд░реНрд╖ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рдореЗрдВ, рдЗрд╕реЗ рдкрд░рд┐рд╖реНрдХреГрдд, рд╕рдореНрдорд╛рдирд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛, рдПрдХ рдирдпрд╛ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдЬреЛ рдЗрд╕ рд╕рдордп рд╕реЗ рдкрд░реЗ рдЪрд▓рд╛ рдЧрдпрд╛ред рд╡рд╣реА рдзрд╛рд░рд╛ рдмрд╛рдХреА рд╣рд┐рд╕реНрд╕реЛрдВ рд╕реЗ рдЕрд▓рдЧ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╣рдордиреЗ рдЪрд░рдгреЛрдВ рдХреА рдПрдХ рдирдИ рдкреНрд░рдгрд╛рд▓реА рд╢реБрд░реВ рдХреА рд╣реИ, рдЗрд╕ рдкрд╛рдареНрдпрдХреНрд░рдо рдХреЛ рддреАрди рднрд╛рдЧреЛрдВ рдореЗрдВ рддреЛрдбрд╝ рджрд┐рдпрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреА рдХреБрд▓ рдЕрд╡рдзрд┐ рдХреЛ рдереЛрдбрд╝рд╛ рдмрдврд╝рд╛ рджрд┐рдпрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП рдЕрдм рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рдЧрд╛рддрд╛рд░ рдкрд╛рдВрдЪ рдорд╣реАрдиреЛрдВ рддрдХ рдердХрдирд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдмрд▓реНрдХрд┐ рджреЛ рдорд╣реАрдиреЗ рдХреА рдЕрд╡рдзрд┐ рдХреЛ рд╢рд╛рдВрддрд┐ рд╕реЗ рдЪреБрдирдХрд░ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рд╕реЗ рдЧреБрдЬрд░рдирд╛ рд╣реЛрдЧрд╛ред рд▓реЗрдХрд┐рди рдпрд╣ рдЧреАрдд рд╣реИ, рдЖрдЗрдП рдЕрдкрдиреА рдкрд░рдВрдкрд░рд╛ рдкрд░ рдЪрд▓рддреЗ рд╣реБрдП рд╡рд┐рднрд┐рдиреНрди рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдиреЗрдВ, рдЬреЛ рдкрд╛рдареНрдпрдХреНрд░рдо рдХреЗ рд╢реБрднрд╛рд░рдВрдн рд╕реЗ рдкрд╣рд▓реЗ рдХреА рд╣реИрдВред
рдЪрд▓реЛ рдЪрд▓рддреЗ рд╣реИрдВред
1. рдЕрд╡рд▓реЛрдХрди
рдЬрд╛рд╡рд╛ рд╕рд░реНрд╡рд▓реЗрдЯ рдХрдВрдЯреЗрдирд░ (рдпрд╛ рд╡реЗрдм рд╕рд░реНрд╡рд░) рдХреЛ рдорд▓реНрдЯреАрдереНрд░реЗрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: рдПрдХ рд╣реА рд╕рд░реНрд╡рд▓реЗрдЯ рдХреЗ рдХрдИ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдПрдХ рд╕рд╛рде рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдПрдХ рд╕рд░реНрд╡рд▓реЗрдЯ рд▓рд┐рдЦрддреЗ рд╕рдордп, рдЖрдкрдХреЛ рдкреНрд░рддрд┐рдпреЛрдЧрд┐рддрд╛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЬреИрд╕рд╛ рдХрд┐ рд╣рдордиреЗ рдкрд╣рд▓реЗ рдХрд╣рд╛ рдерд╛, рдПрдХ рдФрд░ рдХреЗрд╡рд▓ рдПрдХ рд╕рд░реНрд╡рд▓реЗрдЯ рдХрд╛ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдирдП рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП, рд╕рд░реНрд╡рд▓реЗрдЯ рдХрдВрдЯреЗрдирд░ doGet () рдпрд╛ doPost () рд╕рд░реНрд╡рд▓реЗрдЯ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдзрд╛рдЧрд╛ рдмрдирд╛рддрд╛ рд╣реИред
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рд╕рд░реНрд╡рд▓реЗрдЯ рдереНрд░реЗрдб рд╕реБрд░рдХреНрд╖рд┐рдд рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ; рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рд╕реНрд╡рдпрдВ рдЗрд╕рдХрд╛ рдзреНрдпрд╛рди рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕ рдЕрдзреНрдпрд╛рдп рдореЗрдВ, рд╣рдо рд╕рд░реНрд╡рд▓реЗрдЯ рдкреНрд░рддрд┐рдпреЛрдЧрд┐рддрд╛ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░реЗрдВрдЧреЗред рдпрд╣ рдПрдХ рдмрд╣реБрдд рд╣реА рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЕрд╡рдзрд╛рд░рдгрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реЗрдВред
2. рдзрд╛рдЧреЗ рдХрд╛ рдЕрд╡рд▓реЛрдХрди

рдПрдХ рдереНрд░реЗрдб рдПрдХ рд╣рд▓реНрдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЕрдкрдирд╛ рдХреЙрд▓ рд╕реНрдЯреИрдХ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЙрд╕реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдЕрдиреНрдп рдереНрд░реЗрдбреНрд╕ рдХреЗ рдЦреБрд▓реЗ рдбреЗрдЯрд╛ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рддрд╛ рд╣реИ (рд╕рд╛рдЭрд╛ рд╣реАрдк)ред рдкреНрд░рддреНрдпреЗрдХ рдзрд╛рдЧреЗ рдХрд╛ рдЕрдкрдирд╛ рдХреИрд╢ рд╣реИред
рдЬрдм рд╣рдо рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдорд▓реНрдЯреАрдереНрд░реЗрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╣рдорд╛рд░рд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдПрдХ рд╣реА рдЙрджрд╛рд╣рд░рдг рдХрдИ рдереНрд░реЗрдбреНрд╕ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдПрдХ рд╕рд┐рдВрдЧрд▓ рдХреЛрдб рдПрд▓рд┐рдореЗрдВрдЯ рдХреЛ рдкреНрд░реЛрд╕реЗрд╕ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдХрдИ рд▓рдЧрд╛рддрд╛рд░ рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ рдПрдХ рд╣реА рдореЗрдореЛрд░реА рдмреНрд▓реЙрдХ рд╕реЗ рдЧреБрдЬрд░рддреЗ рд╣реИрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдХрдИ рдереНрд░реЗрдбреНрд╕ рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рд▓рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдЪрд░ рд╕рд╛рдЭрд╛ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрди рд╕рд╛рдЭрд╛ рдЪрд░ рдХреЛ рдкрдврд╝рдиреЗ рдФрд░ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЖрдЗрдП рдПрдХ рд╕рд░рд▓ рдЬрд╛рд╡рд╛ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВред
public class Counter { int counter=10; public void doSomething() { System.out.println(тАЬInital Counter = тАЭ + counter); counter ++; System.out.println(тАЬPost Increment Counter = тАЭ + counter); } }
рдЕрдм рд╣рдо
doSomething()
рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреЛ рдереНрд░реЗрдбреНрд╕ Thread1 рдФрд░ Thread2 рдмрдирд╛рддреЗ рд╣реИрдВред рдирддреАрдЬрддрди, рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐:
- Thread1 10 рдХрд╛ рдХрд╛рдЙрдВрдЯрд░ рдорд╛рди рдкрдврд╝рддрд╛ рд╣реИ
- рдЗрдирд┐рдЯрд▓ рдХрд╛рдЙрдВрдЯрд░ = 10 рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╡реЗрддрди рд╡реГрджреНрдзрд┐ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реИ
- рдереНрд░реЗрдб 1 рдХрд╛рдЙрдВрдЯрд░ рдмрдврд╝рд╛рдиреЗ рдХреЗ рдкрд╣рд▓реЗ, рдереНрд░реЗрдб 2 рдХрд╛рдЙрдВрдЯрд░ рдХреЛ рднреА рдмрдврд╝рд╛рддрд╛ рд╣реИ, рдХрд╛рдЙрдВрдЯрд░ рдХреЛ 11 рдореЗрдВ рдмрджрд▓ рджреЗрддрд╛ рд╣реИ
- рдирддреАрдЬрддрди, рдереНрд░реЗрдб 1 рдХрд╛ рдХрд╛рдЙрдВрдЯрд░ рдорд╛рди 10 рд╣реИ, рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рдкреБрд░рд╛рдирд╛ рд╣реИ
рдпрд╣ рдкрд░рд┐рджреГрд╢реНрдп рдмрд╣реБ-рдереНрд░реЗрдбреЗрдб рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рд╕рдВрднрд╡ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рд╕рд░реНрд╡рд▓реЗрдЯреНрд╕, рдХреНрдпреЛрдВрдХрд┐ рдЙрджрд╛рд╣рд░рдг рдЪрд░ рдЙрд╕реА рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдЪрд▓ рд░рд╣реЗ рд╕рднреА рдереНрд░реЗрдбреНрд╕ рджреНрд╡рд╛рд░рд╛ рд╕рд╛рдЭрд╛ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред
3. рдереНрд░реЗрдб-рд╕реБрд░рдХреНрд╖рд┐рдд рд╕рд░реНрд╡рд▓реЗрдЯреНрд╕ рд▓рд┐рдЦрдирд╛
рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЗрд╕ рдЦрдВрдб рдореЗрдВ рдЖрдк рдЙрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╕рдордЭреЗрдВрдЧреЗ рдЬрд┐рдиреНрд╣реЗрдВ рдореИрдВ рдЬреЛрд░ рджреЗрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдпрджрд┐ рдЖрдкрдХреЛ рдХреЛрдИ рд╕рдВрджреЗрд╣ рд╣реИ, рддреЛ рдмрд┐рдВрджреБ 2 рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрдврд╝реЗрдВред
рдХреБрдЫ рдмрд┐рдВрджреБ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдореЗрдВ рд╕рд░реНрд╡рд▓реЗрдЯ рд▓рд┐рдЦрддреЗ рд╕рдордп рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
Service()
, doGet()
, doPost()
рдпрд╛, рдЖрдо рддреМрд░ рдкрд░, doXXX()
рд╡рд┐рдзрд┐рдпрд╛рдБ рдЙрджрд╛рд╣рд░рдг рдЪрд░ рдХреЛ рдЕрджреНрдпрддрди рдпрд╛ рд╕рдВрд╢реЛрдзрд┐рдд рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рдЙрджрд╛рд╣рд░рдг рдЪрд░ рд╕рдорд╛рди рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рднреА рдереНрд░реЗрдбреНрд╕ рджреНрд╡рд╛рд░рд╛ рд╕рд╛рдЭрд╛ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред- рдпрджрд┐ рдЙрджрд╛рд╣рд░рдг рдЪрд░ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рдПрдХ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдмреНрд▓реЙрдХ рдореЗрдВ рдХрд░реЗрдВред
- рдЙрдкрд░реЛрдХреНрдд рджреЛрдиреЛрдВ рдирд┐рдпрдо рд╕реНрдерд┐рд░ рдЪрд░ рдкрд░ рднреА рд▓рд╛рдЧреВ рд╣реЛрддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рднреА рд╕рд╛рдорд╛рдиреНрдп рд╣реИрдВред
- рд╕реНрдерд╛рдиреАрдп рдЪрд░ рд╣рдореЗрд╢рд╛ рдереНрд░реЗрдб рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реЛрддреЗ рд╣реИрдВред
- рдЕрдиреБрд░реЛрдз рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЗ рд╕рд░реНрд╡рд▓реЗрдЯ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕рд▓рд┐рдП, рдЖрдкрдХреЗ рд╕рд░реНрд╡рд▓реЗрдЯ рдореЗрдВ рдЪрд▓ рд░рд╣реЗ рдкреНрд░рддреНрдпреЗрдХ рдереНрд░реЗрдб рдХреЗ рд▓рд┐рдПред
рдзрд╛рдЧрд╛ рд╕реБрд░рдХреНрд╖рд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рджреЛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИрдВ:
a) рдЙрд╕ рдмреНрд▓реЙрдХ рдХреЛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд░реЗрдВ рдЬрд┐рд╕рдореЗрдВ рдЖрдк рдЙрджрд╛рд╣рд░рдг рдпрд╛ рд╕реНрдерд┐рд░ рдЪрд░ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВ (рдиреАрдЪреЗ рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ рджреЗрдЦреЗрдВ)ред
рд╣рдо рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк рдЙрд╕ рдмреНрд▓реЙрдХ рдХреЛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд░реЗрдВ рдЬрд┐рд╕рдореЗрдВ рдЖрдкрдХрд╛ рдХреЛрдб рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреВрд░реНрдг рд╡рд┐рдзрд┐ рдХреЛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЙрджрд╛рд╣рд░рдг рдЪрд░ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддрд╛ рд╣реИред
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╣рдореЗрдВ рд╕рд░реНрд╡рд▓реЗрдЯ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдХреЛ рд▓реЙрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╣рдореЗрдВ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рд░реНрд╡рд▓реЗрдЯ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдереНрд░реЗрдб рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class ThreadSafeServlet extends HttpServlet { @override public void doGet (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException int counter; { synchronized (this) {
b) рд╕рд┐рдВрдЧрд▓ рдереНрд░реЗрдб рдореЙрдбрд▓ - рдереНрд░реЗрдб рдХреЛ рд╕рд┐рдВрдЧрд▓-рдереНрд░реЗрдбреЗрдб рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП SingleThreadModel рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд▓рд╛рдЧреВ рдХрд░реЗрдВ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдХреЗрд╡рд▓ рдПрдХ рдереНрд░реЗрдб рд╕реЗрд╡рд╛ () рдпрд╛ doXXX () рд╡рд┐рдзрд┐ рдХреЛ рдПрдХ рдмрд╛рд░ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдЧрд╛ред рдПрдХ рдПрдХрд▓-рдереНрд░реЗрдбреЗрдб рд╕рд░реНрд╡рд▓реЗрдЯ рд▓реЛрдб рдХреЗ рддрд╣рдд рдзреАрдорд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдирдП рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрд╡рддрдВрддреНрд░ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЗрдВрддрдЬрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛
import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class ThreadSafeServlet extends HttpServlet implements SingleThreadModel { int counter;
SingleThreadModel рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рддрдм рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдЗрд╕реЗ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд┐рдП рдЧрдП рдмреНрд▓реЙрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрд╢рдВрд╕рд╛ рдирд╣реАрдВ рдХреА рдЬрд╛рддреА рд╣реИред
4. рдирд┐рд╖реНрдХрд░реНрд╖
рд╕рд░реНрд╡рд▓реЗрдЯ рд▓рд┐рдЦрддреЗ рд╕рдордп рд╣рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд╡рдзрд╛рди рд░рд╣рдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ "рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рд╕рд░реНрд╡рд▓реЗрдЯ рдереНрд░реЗрдб рд╕реБрд░рдХреНрд╖рд┐рдд рдирд╣реАрдВ рд╣реИрдВ"
- рдпрджрд┐ рдЖрдкрдХреЗ рд╕рд░реНрд╡рд▓реЗрдЯ рдореЗрдВ рдХреЛрдИ рд╕реНрдерд┐рд░ рдпрд╛ рд╕рджрд╕реНрдп рдЪрд░ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдЪрд┐рдВрддрд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдФрд░ рдЖрдкрдХрд╛ рд╕рд░реНрд╡рд▓реЗрдЯ рдереНрд░реЗрдб рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ
- рдпрджрд┐ рдЖрдкрдХрд╛ рд╕рд░реНрд╡рд▓реЗрдЯ рдХреЗрд╡рд▓ рдЙрджрд╛рд╣рд░рдг рдЪрд░ рдХреЛ рдкрдврд╝рддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХрд╛ рд╕рд░реНрд╡рд▓реЗрдЯ рдереНрд░реЗрдб рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИред
- рдпрджрд┐ рдЖрдкрдХреЛ рдХреЛрдИ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдпрд╛ рд╕реНрдЯреИрдЯрд┐рдХ рд╡реЗрд░рд┐рдПрдмрд▓ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рдЗрдВрд╕реНрдЯреИрдВрдб рдмреНрд▓реЙрдХ рдореЗрдВ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЛ рд▓реЙрдХ рдХрд░рдХреЗ
рдпрджрд┐ рдЖрдк рдКрдкрд░ рджрд┐рдП рдЧрдП рдирд┐рдпрдореЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЕрдЧрд▓реА рдмрд╛рд░ рдХреЛрдИ рдЖрдкрд╕реЗ рдкреВрдЫрддрд╛ рд╣реИ: "рд╕рд░реНрд╡рд▓реЗрдЯ рдереНрд░реЗрдб рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ?" - рдЖрддреНрдорд╡рд┐рд╢реНрд╡рд╛рд╕ рд╕реЗ рдЙрддреНрддрд░ рджреЗрдВ: "рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рд╡реЗ рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди" рдореЗрд░реЗ рд╕рд░реНрд╡рд▓реЗрдЯ "рдереНрд░реЗрдб рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИрдВред"
рдЕрдВрдд
рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рд╣рдо рдпрд╣рд╛рдВ рдЖрдкрдХреЗ рд╕рд╡рд╛рд▓реЛрдВ, рд╕реБрдЭрд╛рд╡реЛрдВ рдЖрджрд┐ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдпрд╛ рдЖрдк рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ рдкрд░
рдУрдкрди рдкрд╛рда рдореЗрдВ рд╕рд░реНрдЧреЗрдИ рдкреЗрдЯреНрд░реЗрд▓реЗрд╡рд┐рдЪ рд╕реЗ рдкреВрдЫ рд╕рдХрддреЗ рд╣реИрдВред