рдкреБрд╕реНрддрдХ "рдЬрд╛рд╡рд╛ рдХреЙрдирдПрдЬреЗрдВрд╕реА рдЗрди рдкреНрд░реИрдХреНрдЯрд┐рд╕"

рдЫрд╡рд┐рд╣реИрд▓реЛ, рд╣рдмреНрд░реЛрдЬрд╝рд┐рдЯреЗрд▓реА! рдзрд╛рд░рд╛рдПрдБ рдЬрд╛рд╡рд╛ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХрд╛ рдПрдХ рдореВрд▓рднреВрдд рд╣рд┐рд╕реНрд╕рд╛ рд╣реИрдВред рдорд▓реНрдЯреА-рдХреЛрд░ рдкреНрд░реЛрд╕реЗрд╕рд░ рд╕рд╛рдорд╛рдиреНрдп рд╣реИрдВ, рдФрд░ рдХрд┐рд╕реА рднреА рдЙрдЪреНрдЪ-рдкреНрд░рджрд░реНрд╢рди рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдВрд╕реАрдбрд░ рдХрд╛ рдкреНрд░рднрд╛рд╡реА рдЙрдкрдпреЛрдЧ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рдЧрдпрд╛ рд╣реИред рдПрдХ рдмреЗрд╣рддрд░ рдЬрд╛рд╡рд╛ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди, рдЙрдЪреНрдЪ-рдкреНрд░рджрд░реНрд╢рди рд╡рд░реНрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдФрд░ рд╕рдорд╛рдирд╛рдВрддрд░ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдмрд┐рд▓реНрдбрд┐рдВрдЧ рдмреНрд▓реЙрдХ рдХрд╛ рдПрдХ рд╕рдореГрджреНрдз рд╕реЗрдЯ рдПрдХ рд╕рдордп рдореЗрдВ рд╕рдорд╛рдирд╛рдВрддрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рдПрдХ рд╕рдлрд▓рддрд╛ рдереАред рдЕрднреНрдпрд╛рд╕ рдореЗрдВ рдЬрд╛рд╡рд╛ рдХреЙрдирдХрд░реАрд░рд┐рдЯреА рдореЗрдВ, рд╕рдлрд▓рддрд╛ рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХреА рдХреЗ рдирд┐рд░реНрдорд╛рддрд╛ рдЦреБрдж рдХреЛ рди рдХреЗрд╡рд▓ рдмрддрд╛рддреЗ рд╣реИрдВ рдХрд┐ рд╡реЗ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдмрд▓реНрдХрд┐ рдбрд┐рдЬрд╛рдЗрди рдкреИрдЯрд░реНрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреА рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВред рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзреА рдХрд╛рд░реНрдпрдХреНрд░рдо рдмрдирд╛рдирд╛ рдЖрд╕рд╛рди рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдмрд╣реБ-рдереНрд░реЗрдбреЗрдб рдкреНрд░реЛрдЧреНрд░рд╛рдореЛрдВ рдХрд╛ рд╡рд┐рдХрд╛рд╕, рдкрд░реАрдХреНрд╖рдг рдФрд░ рдбрд┐рдмрдЧрд┐рдВрдЧ рдХрдИ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред рдХреЛрдб рдХрд╛рдо рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реИ рдЬрдм рдпрд╣ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реЛрддрд╛ рд╣реИ: рднрд╛рд░реА рднрд╛рд░ рдХреЗ рддрд╣рддред"рдЬрд╛рд╡рд╛ рдХрдВрд╕реЗрдВрдмрд▓реА рдЗрди рдкреНрд░реИрдХреНрдЯрд┐рд╕" рдореЗрдВ рдЖрдкрдХреЛ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп, рд╕реНрдХреЗрд▓реЗрдмрд▓ рдФрд░ рд╕рдорд░реНрдерд┐рдд рд╕рдорд╛рдирд╛рдВрддрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рджреНрдзрд╛рдВрдд рдФрд░ рд╡рд┐рд╢рд┐рд╖реНрдЯ рддрд░реАрдХреЗ рджреЛрдиреЛрдВ рдорд┐рд▓реЗрдВрдЧреЗред рд▓реЗрдЦрдХ рдПрдкреАрдЖрдИ рдФрд░ рд╕рдорд╛рдирддрд╛рд╡рд╛рдж рддрдВрддреНрд░реЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ; рд╡реЗ рдбрд┐рдЬрд╛рдЗрди рдирд┐рдпрдо, рдкреИрдЯрд░реНрди рдФрд░ рдореЙрдбрд▓ рдкреЗрд╢ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдЬрд╛рд╡рд╛ рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рд╣реИрдВ рдФрд░ рдХрдИ рд╡рд░реНрд╖реЛрдВ рддрдХ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдФрд░ рдкреНрд░рднрд╛рд╡реА рдмрдиреЗ рд░рд╣рддреЗ рд╣реИрдВред

рдЕрдВрд╢ред рдзрд╛рдЧрд╛ рд╕реБрд░рдХреНрд╖рд╛


рдЖрдк рдЖрд╢реНрдЪрд░реНрдпрдЪрдХрд┐рдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдереНрд░реЗрдбреНрд╕ рдпрд╛ рд▓реЙрдХреНрд╕ рд╕реЗ рдЬреБрдбрд╝реА рд╣реБрдИ рд╣реИ (1) рд╕рд┐рд╡рд┐рд▓ рдЗрдВрдЬреАрдирд┐рдпрд░рд┐рдВрдЧ рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд░рд┐рд╡реЗрдЯреНрд╕ рдФрд░ рдЖрдИ-рдмреАрдо рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИред рдмреЗрд╢рдХ, рдкреБрд▓реЛрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдореЗрдВ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд░рд┐рд╡реЗрдЯреНрд╕ рдФрд░ рдЖрдИ-рдмреАрдо рдХрд╛ рд╕рд╣реА рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдФрд░ рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзреА рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдкрд░ рднреА рдпрд╣реА рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдереНрд░реЗрдбреНрд╕ рдФрд░ рд▓реЙрдХреНрд╕ рдХреЗ рд╕рд╣реА рдЙрдкрдпреЛрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рд▓реЗрдХрд┐рди рдпреЗ рд╕рд┐рд░реНрдл рддрдВрддреНрд░ рд╣реИрдВ - рд▓рдХреНрд╖реНрдп рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рд╕рд╛рдзрдиред рдереНрд░реЗрдб-рд╕реБрд░рдХреНрд╖рд┐рдд рдХреЛрдб рд▓рд┐рдЦрдирд╛, рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдПрдХ рд░рд╛рдЬреНрдп рддрдХ рдкрд╣реБрдВрдЪ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдирд╛ рд╣реИ, рдФрд░, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдПрдХ рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓ рд░рд╛рдЬреНрдп рдХреЗ рд▓рд┐рдПред

рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреА рд╕реНрдерд┐рддрд┐ рдЙрд╕рдХреЗ рдбреЗрдЯрд╛ рдХреЛ рд░рд╛рдЬреНрдп рдЪрд░ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдФрд░ рдЕрдиреНрдп рдЖрд╢реНрд░рд┐рдд рд╡рд╕реНрддреБрдУрдВ рд╕реЗ рд╕реНрдерд┐рд░ рдХреНрд╖реЗрддреНрд░ рдпрд╛ рдлрд╝реАрд▓реНрдбред HashMap рд╣реИрд╢ рдХреА рд╕реНрдерд┐рддрд┐ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ HashMap рдореЗрдВ рд╣реА рд╕рдВрдЧреНрд░рд╣реАрдд рдХреА рдЬрд╛рддреА рд╣реИ, рд▓реЗрдХрд┐рди рдХрдИ Map.Entry рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рднреАред рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдХреЛрдИ рднреА рдбреЗрдЯрд╛ рд╢рд╛рдорд┐рд▓ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдЙрд╕рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред

(1) lock block, ┬л┬╗, , . blocking. lock ┬л┬╗, ┬л ┬╗. lock , , , ┬л┬╗. тАФ . , , , . тАФ . . .

рдХрдИ рдереНрд░реЗрдб рд╕рд╛рдЭрд╛ рдЪрд░ рддрдХ рдкрд╣реБрдВрдЪ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрддреНрдкрд░рд┐рд╡рд░реНрддрд┐рдд - рдЗрд╕рдХреЗ рдореВрд▓реНрдп рдХреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╣рдо рдЕрдирд┐рдпрдВрддреНрд░рд┐рдд рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзрд╛рддреНрдордХ рдкрд╣реБрдБрдЪ рд╕реЗ, рдХреЛрдб рдХреА рдирд╣реАрдВ, рдбреЗрдЯрд╛ рдХреА рд░рдХреНрд╖рд╛ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рдереНрд░реЗрдб-рд╕реЗрдл рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрддреНрдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╕реНрдерд┐рддрд┐ рддрдХ рдкрд╣реБрдВрдЪ рдХреЛ рд╕рдордиреНрд╡рдпрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕реЗ рдкреВрд░рд╛ рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓рддрд╛ рдбреЗрдЯрд╛ рднреНрд░рд╖реНрдЯрд╛рдЪрд╛рд░ рдФрд░ рдЕрдиреНрдп рдЕрд╡рд╛рдВрдЫрдиреАрдп рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдЬрдиреНрдо рджреЗ рд╕рдХрддреА рд╣реИред

рдЬрдм рднреА рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдереНрд░реЗрдб рдПрдХ рд╕реНрдЯреЗрдЯ рд╡реИрд░рд┐рдПрдмрд▓ рдПрдХреНрд╕реЗрд╕ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдереНрд░реЗрдбреНрд╕ рдореЗрдВ рд╕реЗ рдПрдХ рд╕рдВрднрд╡рддрдГ рдЗрд╕реЗ рд▓рд┐рдЦрддрд╛ рд╣реИ, рддреЛ рд╕рднреА рдереНрд░реЗрдбреНрд╕ рдХреЛ рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреА рдПрдХреНрд╕реЗрд╕ рдХреЛ рд╕рдордиреНрд╡рдпрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЬрд╛рд╡рд╛ рдореЗрдВ рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝реЗрд╢рди рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝ рдХреАрд╡рд░реНрдб рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдПрдХреНрд╕рдХреНрд▓реВрд╕рд┐рд╡ рд▓реЙрдХрд┐рдВрдЧ, рд╕рд╛рде рд╣реА рд╡рд╛рд╖реНрдкрд╢реАрд▓ рдФрд░ рдкрд░рдорд╛рдгреБ рдЪрд░ рдФрд░ рд╕реНрдкрд╖реНрдЯ рд▓реЙрдХ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

рдпрд╣ рд╕реЛрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд▓реЛрднрди рдХрд╛ рд╡рд┐рд░реЛрдз рдХрд░реЗрдВ рдХрд┐ рдРрд╕реА рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпрд╛рдВ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЕрдкрдиреЗ рдкрд░реАрдХреНрд╖рдг рдкрд╛рд╕ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рднреА рд╕рдордп рдЦрд░рд╛рдмреА рдФрд░ рджреБрд░реНрдШрдЯрдирд╛рдЧреНрд░рд╕реНрдд рд░рд╣ рд╕рдХрддрд╛ рд╣реИред

рдпрджрд┐ рдПрдХрд╛рдзрд┐рдХ рдереНрд░реЗрдбреНрд╕ рдПрдХ рд╣реА рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓ рдЕрд╡рд╕реНрдерд╛ рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рд╡реЗрд░рд┐рдПрдмрд▓ рдХреЛ рдмрд┐рдирд╛ рдЙрдЪрд┐рдд рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝реЗрд╢рди рдХреЗ рдПрдХреНрд╕реЗрд╕ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХрд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЦрд░рд╛рдмреА рд╣реИред рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рддреАрди рддрд░реАрдХреЗ рд╣реИрдВ:

  • рд░рд╛рдЬреНрдп рд╕реВрддреНрд░ рдХреЛ рд╕рднреА рдереНрд░реЗрдбреНрд╕ рдореЗрдВ рд╕рд╛рдЭрд╛ рди рдХрд░реЗрдВ
  • рд░рд╛рдЬреНрдп рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓ рдЧреИрд░-рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓ рдмрдирд╛рдирд╛;
  • рд╣рд░ рдмрд╛рд░ рдЬрдм рдЖрдк рд░рд╛рдЬреНрдп рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рд░рд╛рдЬреНрдп рддреБрд▓реНрдпрдХрд╛рд▓рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

рд╕реБрдзрд╛рд░ рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рдбрд┐рдЬрд╛рдЗрди рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдмрд╛рдж рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХреНрд▓рд╛рд╕ рдереНрд░реЗрдб-рд╕реБрд░рдХреНрд╖рд┐рдд рдХреЛ рдбрд┐рдЬрд╛рдЗрди рдХрд░рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИред

рдПрдХрд╛рдзрд┐рдХ рдереНрд░реЗрдбреНрд╕ рдЗрд╕ рдпрд╛ рдЙрд╕ рд╡реЗрд░рд┐рдПрдмрд▓ рддрдХ рдкрд╣реБрдВрдЪреЗрдВрдЧреЗ рдпрд╛ рдирд╣реАрдВ, рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдСрдмреНрдЬреЗрдХреНрдЯ-рдУрд░рд┐рдПрдВрдЯреЗрдб рддрдХрдиреАрдХреА рд╕рдорд╛рдзрд╛рди рдЬреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕рдВрдЧрдард┐рдд рдФрд░ рдЖрд╕рд╛рдиреА рд╕реЗ рдмрдирд╛рдП рд░рдЦрдиреЗ рд╡рд╛рд▓реА рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рдмрдирд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддреЗ рд╣реИрдВ - рдЬреИрд╕реЗ рдХрд┐ рдПрдирдХреИрдкреНрд╕реБрд▓реЗрдЯрд┐рдВрдЧ рдФрд░ рдЫреБрдкрд╛ рдбреЗрдЯрд╛ - рдереНрд░реЗрдб-рд╕реБрд░рдХреНрд╖рд┐рдд рдХрдХреНрд╖рд╛рдПрдВ рдмрдирд╛рдиреЗ рдореЗрдВ рднреА рдорджрдж рдХрд░рддреЗ рд╣реИрдВред рдХрдо рдзрд╛рдЧреЗ рдЬрд┐рдирдХреА рдкрд╣реБрдВрдЪ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдЪрд░ рддрдХ рд╣реЛрддреА рд╣реИ, рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдФрд░ рдЙрди рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЛ рд╕реЗрдЯ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ рдЬрд┐рдирдХреЗ рддрд╣рдд рдЗрд╕ рдЪрд░ рдХреЛ рдПрдХреНрд╕реЗрд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЬрд╛рд╡рд╛ рднрд╛рд╖рд╛ рдЖрдкрдХреЛ рд░рд╛рдЬреНрдп рдХреЛ рдПрдирдХреИрдкреНрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдирд╣реАрдВ рдХрд░рддреА рд╣реИ - рдпрд╣ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреНрд╖реЗрддреНрд░реЛрдВ (рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕реНрдереИрддрд┐рдХ рдХреНрд╖реЗрддреНрд░реЛрдВ) рдореЗрдВ рд░рд╛рдЬреНрдп рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдпрд╛ рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреЗ рд▓рд┐рдВрдХ рдХреЛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реИ рдЬреЛ рдЕрдиреНрдпрдерд╛ рдЖрдВрддрд░рд┐рдХ рд╣реИ - рд▓реЗрдХрд┐рди рдЖрдкрдХреЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреА рд╕реНрдерд┐рддрд┐ рдмреЗрд╣рддрд░ рд╣реИ,рдЕрдкрдиреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдереНрд░реЗрдб рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рдмрдирд╛рдирд╛ рдФрд░ рдЗрд╕реЗ рдмрдирд╛рдП рд░рдЦрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╕рд╛рди рд╣реИред

рдереНрд░реЗрдб-рд╕реЗрдл рдХреНрд▓рд╛рд╕реЗрд╕, рдЕрдЪреНрдЫреЗ рдСрдмреНрдЬреЗрдХреНрдЯ-рдУрд░рд┐рдПрдВрдЯреЗрдб рдЯреЗрдХреНрдирд┐рдХрд▓ рд╕реЙрд▓реНрдпреВрд╢рдВрд╕ рдХреЛ рдбрд┐рдЬрд╛рдЗрди рдХрд░рддреЗ рд╕рдордп: рдЗрдирдХреИрдкреНрд╕реБрд▓реЗрд╢рди, рдореНрдпреВрдЯреЗрдмрд┐рд▓рд┐рдЯреА, рдФрд░ рдЗрдирд╡реЗрд░реАрдВрдЯреНрд╕ рдХрд╛ рд╕реНрдкрд╖реНрдЯ рд╕реНрдкреЗрд╕рд┐рдлрд┐рдХреЗрд╢рди рдЖрдкрдХреЗ рд╕рд╣рд╛рдпрдХ рд╣реЛрдВрдЧреЗред

рдпрджрд┐ рдЕрдЪреНрдЫрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ-рдУрд░рд┐рдПрдВрдЯреЗрдб рдбрд┐рдЬрд╝рд╛рдЗрди рддрдХрдиреАрдХреА рд╕рдорд╛рдзрд╛рди рдбреЗрд╡рд▓рдкрд░ рдХреА рдЬрд╝рд░реВрд░рддреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╡рд┐рд░рд╛рд╕рдд рдХреЛрдб рдХреЗ рд╕рд╛рде рдкреНрд░рджрд░реНрд╢рди рдпрд╛ рдкрд┐рдЫрдбрд╝реЗ рд╕рдВрдЧрддрддрд╛ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫреЗ рдбрд┐рдЬрд╝рд╛рдЗрди рдХреЗ рдирд┐рдпрдореЛрдВ рдХрд╛ рддреНрдпрд╛рдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд╛рдпрдХ рд╣реИред рдХрднреА-рдХрднреА рдЕрдореВрд░реНрддрддрд╛ рдФрд░ рдЗрдирдХреИрдкреНрд╕реБрд▓реЗрд╢рди рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд╕рд╛рде рд╡рд┐рдЪрд░рдг рдкрд░ рд╣реЛрддреЗ рд╣реИрдВ - рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЙрддрдиреА рдмрд╛рд░ рдирд╣реАрдВ, рдЬрд┐рддрдирд╛ рдХрд┐ рдХрдИ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХрд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ - рд▓реЗрдХрд┐рди рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдЕрднреНрдпрд╛рд╕ рдпрд╣ рд╣реИ рдХрд┐ рдХреЛрдб рдХреЛ рдкрд╣рд▓реЗ рд╕рд╣реА рдФрд░ рдлрд┐рд░ рддреЗрдЬрд╝ рдмрдирд╛рдпрд╛ рдЬрд╛рдПред рдЙрддреНрдкрд╛рджрдХрддрд╛ рдФрд░ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рдорд╛рдкрди рд╕реЗ рд╣реА рдЕрдиреБрдХреВрд▓рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ рддрд╛рдХрд┐ рдЖрдк рдпрд╣ рдХрд░ рд╕рдХреЗрдВ (2) ред

(2)рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзреА рдХреЛрдб рдореЗрдВ, рдЖрдкрдХреЛ рд╕рд╛рдорд╛рдиреНрдп рд╕реЗ рдЕрдзрд┐рдХ рдЗрд╕ рдЕрднреНрдпрд╛рд╕ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЪреВрдВрдХрд┐ рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзреА рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреЗрд╣рдж рдХрдард┐рди рд╣реИрдВ рдФрд░ рдбреАрдмрдЧ рдХрд░рдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХреБрдЫ рджреБрд░реНрд▓рдн рдХреЛрдб рд╢рд╛рдЦрд╛рдУрдВ рдкрд░ рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рдкреНрд░рджрд░реНрд╢рди рд▓рд╛рдн рдХрд╛ рд▓рд╛рдн рдЬреЛрдЦрд┐рдо рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрд╛рдлреА рдирдЧрдгреНрдп рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдСрдкрд░реЗрдЯрд┐рдВрдЧ рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рджреБрд░реНрдШрдЯрдирд╛рдЧреНрд░рд╕реНрдд рд╣реЛ рдЬрд╛рдПрдЧрд╛ред

рдпрджрд┐ рдЖрдк рддрдп рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХреЛ рдПрдирдХреИрдкреНрд╕реБрд▓реЗрд╢рди рдХреЛ рддреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рд╕рдм рдХреБрдЫ рдЦреЛ рдирд╣реАрдВ рдЬрд╛рддрд╛ рд╣реИред рдЖрдкрдХреЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдЕрднреА рднреА рдереНрд░реЗрдб рд╕реБрд░рдХреНрд╖рд┐рдд рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдФрд░ рдЕрдзрд┐рдХ рдорд╣рдВрдЧреА рд╣реЛрдЧреА, рдФрд░ рдкрд░рд┐рдгрд╛рдо рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╣реЛрдЧрд╛ред рдЕрдзреНрдпрд╛рдп 4 рдореЗрдВ рдЙрди рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬрд┐рдирдХреЗ рддрд╣рдд рд░рд╛рдЬреНрдп рдЪрд░ рдХрд╛ рдПрдирдХреИрдкреНрд╕реБрд▓реЗрд╢рди рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдХрдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЕрдм рддрдХ, рд╣рдордиреЗ "рдереНрд░реЗрдб рд╕реЗрдл рдХреНрд▓рд╛рд╕" рдФрд░ "рдереНрд░реЗрдб рд╕реЗрдл рдкреНрд░реЛрдЧреНрд░рд╛рдо" рд╢рдмреНрджреЛрдВ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рд╣реИред рдХреНрдпрд╛ рдПрдХ рдереНрд░реЗрдб рд╕реЗрдл рдкреНрд░реЛрдЧреНрд░рд╛рдо рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдереНрд░реЗрдб рд╕реЗрдл рдХреНрд▓рд╛рд╕реЗрд╕ рд╕реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ? рд╡реИрдХрд▓реНрдкрд┐рдХ: рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЬрд┐рд╕рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдереНрд░реЗрдб рд╕реЗрдл рдХреНрд▓рд╛рд╕реЗрд╕ рд╣реЛрддреЗ рд╣реИрдВ, рдереНрд░реЗрдб рд╕реЗрдл рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдереНрд░реЗрдб рд╕реЗрдл рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ рдРрд╕реА рдХреНрд▓рд╛рд╕реЗрд╕ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ рдЬреЛ рдереНрд░реЗрдб рд╕реЗрдл рдирд╣реАрдВ рд╣реИрдВред рдереНрд░реЗрдб-рд╕реЗрдл рдХреНрд▓рд╛рд╕реЗрд╕ рдХреЗ рд▓реЗрдЖрдЙрдЯ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ рдкрд░ рднреА рдЕрдзреНрдпрд╛рдп 4 рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рд╣реИред рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ, рдереНрд░реЗрдб-рд╕реЗрдл рдХреНрд▓рд╛рд╕ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЗрд╡рд▓ рддрднреА рд╕рдордЭ рдореЗрдВ рдЖрддреА рд╣реИ, рдЬрдм рдХреНрд▓рд╛рд╕ рдЕрдкрдиреЗ рд░рд╛рдЬреНрдп рдХреЛ рдЕрд▓рдЧ рдХрд░ рджреЗрддреА рд╣реИред рд╢рдмреНрдж "рдереНрд░реЗрдб рд╕реБрд░рдХреНрд╖рд╛" рдХреЛрдб рдХреЗ рд▓рд┐рдП рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд░рд╛рдЬреНрдп рдХреА рдмрд╛рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдХреЗрд╡рд▓ рдЙрд╕ рдХреЛрдб рдХреЗ рдХреЛрдб рдкрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдЕрдкрдиреЗ рд░рд╛рдЬреНрдп рдХреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд░рддрд╛ рд╣реИ (рдпрд╣ рдПрдХ рд╡рд╕реНрддреБ рдпрд╛ рдкреВрд░реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рд╣реЛ рд╕рдХрддрд╛ рд╣реИ)ред

2.1ред рдзрд╛рдЧрд╛ рд╕реБрд░рдХреНрд╖рд╛ рдХреНрдпрд╛ рд╣реИ?


рдзрд╛рдЧрд╛ рд╕реБрд░рдХреНрд╖рд╛ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИред рдПрдХ рддреНрд╡рд░рд┐рдд Google рдЦреЛрдЬ рдЖрдкрдХреЛ рдХрдИ рд╡рд┐рдХрд▓реНрдк рджреЗрддреА рд╣реИ рдЬреИрд╕реЗ:

... рдереНрд░реЗрдб рдХреЗ рдмреАрдЪ рдЕрд╡рд╛рдВрдЫрд┐рдд рдЗрдВрдЯрд░реИрдХреНрд╢рди рдХреЗ рдмрд┐рдирд╛ рдХрдИ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдереНрд░реЗрдб рд╕реЗ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

... рдХреЙрд▓ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕реЗ рдХрд┐рд╕реА рдЕрдиреНрдп рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд┐рдирд╛, рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рджреЛ рдпрд╛ рдЕрдзрд┐рдХ рдереНрд░реЗрдбреНрд╕ рджреНрд╡рд╛рд░рд╛ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдРрд╕реА рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдпрд╣ рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╣рдо рдереНрд░реЗрдб рд╕реБрд░рдХреНрд╖рд╛ рдХреЛ рднреНрд░рд╛рдордХ рдкрд╛рддреЗ рд╣реИрдВ! рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рд╡рд░реНрдЧ рд╕реЗ рдереНрд░реЗрдб-рд╕реБрд░рдХреНрд╖рд┐рдд рд╡рд░реНрдЧ рдХреЛ рдХреИрд╕реЗ рдЕрд▓рдЧ рдХрд┐рдпрд╛ рдЬрд╛рдП? "рд╕реБрд░рдХреНрд╖рд┐рдд" рд╢рдмреНрдж рд╕реЗ рд╣рдорд╛рд░рд╛ рдХреНрдпрд╛ рддрд╛рддреНрдкрд░реНрдп рд╣реИ?

рдзрд╛рдЧрд╛ рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рдХрд┐рд╕реА рднреА рдЙрдЪрд┐рдд рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рджрд┐рд▓ рдореЗрдВ рд╢реБрджреНрдзрддрд╛ рдХреА рдзрд╛рд░рдгрд╛ рд╣реИред

рд╕реБрдзрд╛рд░ рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдПрдХ рд╡рд░реНрдЧ рдЕрдкрдиреЗ рд╡рд┐рдирд┐рд░реНрджреЗрд╢рди рдХреЗ рдЕрдиреБрд░реВрдк рд╣реИред рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдЙрди рдЪрд╛рд▓рд╛рдиреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреА рд╕реНрдерд┐рддрд┐ рдФрд░ рдкреЛрд╕реНрдЯрдХрдВрдбрд┐рд╢рди рдХреЛ рд╕реАрдорд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдСрдкрд░реЗрд╢рди рдХреЗ рдкреНрд░рднрд╛рд╡реЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВред рдЖрдк рдХреИрд╕реЗ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд╡рд░реНрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рд╕рд╣реА рд╣реИрдВ? рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╣рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╣рдордиреЗ рдЦреБрдж рдХреЛ рдЖрд╢реНрд╡рд╕реНрдд рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ рдХреЛрдб рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рддреЛ рдЪрд▓рд┐рдП рдорд╛рди рд▓реЗрддреЗ рд╣реИрдВ рдХрд┐ рд╕рд┐рдВрдЧрд▓ рдереНрд░реЗрдбреЗрдб рд╢реБрджреНрдзрддрд╛ рдХреБрдЫ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИред рдЕрдм рд╣рдо рдорд╛рди рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдереНрд░реЗрдб-рд╕реЗрдл рдХреНрд▓рд╛рд╕ рдХрдИ рдереНрд░реЗрдбреНрд╕ рд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХреЗ рджреМрд░рд╛рди рд╕рд╣реА рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛ рд╣реИред

рдПрдХ рд╡рд░реНрдЧ рдереНрд░реЗрдб рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ рдпрджрд┐ рдпрд╣ рдХрдИ рдереНрд░реЗрдбреНрд╕ рд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХреЗ рджреМрд░рд╛рди рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рдпреЗ рдзрд╛рдЧреЗ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╡рд╛рддрд╛рд╡рд░рдг рджреНрд╡рд╛рд░рд╛ рд╢реЗрдбреНрдпреВрд▓ рдХрд┐рдП рдЧрдП рдпрд╛ рдЗрдВрдЯрд░рд▓реЗрдп рдХрд┐рдП рдЧрдП рд╣реЛрдВ, рдФрд░ рдХреЙрд▓рд┐рдВрдЧ рдХреЛрдб рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдкрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рдпрд╛ рдЕрдиреНрдп рд╕рдордиреНрд╡рдп рдХреЗ рдмрд┐рдирд╛ред

рдПрдХ рдмрд╣реБ-рдереНрд░реЗрдбреЗрдб рдкреНрд░реЛрдЧреНрд░рд╛рдо рдереНрд░реЗрдб рд╕реБрд░рдХреНрд╖рд┐рдд рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдпрджрд┐ рдпрд╣ рдПрдХрд▓-рдереНрд░реЗрдбреЗрдб рд╡рд╛рддрд╛рд╡рд░рдг (3) рдореЗрдВ рднреА рд╕рд╣реА рдирд╣реАрдВ рд╣реИ ред рдпрджрд┐ рд╡рд╕реНрддреБ рдХреЛ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╕рдВрдЪрд╛рд▓рди рдХрд╛ рдХреЛрдИ рдЕрдиреБрдХреНрд░рдо рдирд╣реАрдВ рд╣реИ - рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рддрд░реАрдХреЛрдВ рддрдХ рдкрд╣реБрдВрдЪрдирд╛ рдФрд░ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреНрд╖реЗрддреНрд░реЛрдВ рдореЗрдВ рдкрдврд╝рдирд╛ рдпрд╛ рд▓рд┐рдЦрдирд╛ - рдЗрд╕рдХреЗ рдЖрдХреНрд░рдордгрдХрд╛рд░рд┐рдпреЛрдВ рдпрд╛ рдкреЛрд╕реНрдЯрдХрдВрдбрд┐рд╢рди рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдереНрд░реЗрдб-рд╕реБрд░рдХреНрд╖рд┐рдд рд╡рд░реНрдЧ рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдкрд░ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рдпрд╛ рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзреА рд░реВрдк рд╕реЗ рдХрд┐рдП рдЧрдП рд╕рдВрдЪрд╛рд▓рди рдХрд╛ рдХреЛрдИ рд╕реЗрдЯ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдЕрдорд╛рдиреНрдп рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдирд╣реАрдВ рд▓рд╛ рд╕рдХрддрд╛ рд╣реИред

(рей) рдпрджрд┐ рд╢рдмреНрдж рдХрд╛ рдвреАрд▓рд╛рдкрди рдЖрдкрдХреЛ рдпрд╣рд╛рдБ рдкрд░реЗрд╢рд╛рди рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЖрдк рдереНрд░реЗрдб-рд╕реЗрдл рдХреНрд▓рд╛рд╕ рдХреЛ рдПрдХ рдРрд╕реЗ рд╡рд░реНрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЛрдЪ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзреА рдорд╛рд╣реМрд▓ рдореЗрдВ рджреЛрд╖рдкреВрд░реНрдг рд╣реИ, рд╕рд╛рде рд╣реА рд╕рд╛рде рдПрдХрд▓-рдереНрд░реЗрдбреЗрдб рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рднреАред

рдереНрд░реЗрдб-рд╕реБрд░рдХреНрд╖рд┐рдд рдХрдХреНрд╖рд╛рдПрдВ рдХрд┐рд╕реА рднреА рдЖрд╡рд╢реНрдпрдХ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рдХреЛ рд╕реНрд╡рдпрдВ рд╕рдВрд▓рдЧреНрди рдХрд░рддреА рд╣реИрдВ рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреА рдорджрдж рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред

2.1.1ред рдЙрджрд╛рд╣рд░рдг: рдмрд┐рдирд╛ рдЖрдВрддрд░рд┐рдХ рд░рд╛рдЬреНрдп рд╕рдорд░реНрдерди рдХреЗ рд╕рд░реНрд╡рд▓реЗрдЯ


рдЕрдзреНрдпрд╛рдп 1 рдореЗрдВ, рд╣рдордиреЗ рдЙрди рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд┐рдпрд╛ рд╣реИ рдЬреЛ рдереНрд░реЗрдбреНрд╕ рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рдЙрдирд╕реЗ рдШрдЯрдХ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдЖрдк рдереНрд░реЗрдб рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИрдВред рдЕрдм рд╣рдо рдереНрд░реЗрдб рд╕реЗрдлреНрдЯреА рдХреЛ рдмрдирд╛рдП рд░рдЦрддреЗ рд╣реБрдП рд╕рд░реНрд╡рд▓реЗрдЯ рдлреИрдХреНрдЯрд░рд╛рдЗрдЬреЗрд╢рди рд╕рд░реНрд╡рд┐рд╕ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдФрд░ рдзреАрд░реЗ-рдзреАрд░реЗ рдЗрд╕рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рд░рдЦрддреЗ рд╣реИрдВред

2.1 рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рдирд╛ рдПрдХ рд╕рд░рд▓ рд╕рд░реНрд╡рд▓реЗрдЯ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдЬреЛ рдХрд┐рд╕реА рдХреНрд╡реЗрд░реА рд╕реЗ рдПрдХ рд╕рдВрдЦреНрдпрд╛ рдХреЛ рд╡рд┐рдШрдЯрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЗрд╕реЗ рдХрд╛рд░рдХ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдкрд░рд┐рдгрд╛рдо рд▓рдкреЗрдЯрддрд╛ рд╣реИред

рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ 2.1ред рдЖрдВрддрд░рд┐рдХ рд╕реНрдерд┐рддрд┐ рд╕рдорд░реНрдерди рдХреЗ рдмрд┐рдирд╛ рд╕рд░реНрд╡рд▓реЗрдЯ

@ThreadSafe
public class StatelessFactorizer implements Servlet {
      public void service(ServletRequest req, ServletResponse resp) {
            BigInteger i = extractFromRequest(req);
            BigInteger[] factors = factor(i);
            encodeIntoResponse(resp, factors);
      }
}

рд╕реНрдЯреИрдЯреЗрд▓реЗрд╕рдлрд╝реИрдХреНрдЯреЛрд░рд┐рдЬрд╝рд░ рд╡рд░реНрдЧ, рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕рд░реНрд╡рд▓реЗрдЯреНрд╕ рдХреА рддрд░рд╣, рдХреЛрдИ рдЖрдВрддрд░рд┐рдХ рд╕реНрдерд┐рддрд┐ рдирд╣реАрдВ рд╣реИ: рдЗрд╕рдореЗрдВ рдлрд╝реАрд▓реНрдбреНрд╕ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИрдВ рдФрд░ рдЕрдиреНрдп рд╡рд░реНрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдлрд╝реАрд▓реНрдбреНрд╕ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдПрдХ рд╡рд┐рд╢реЗрд╖ рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП рд░рд╛рдЬреНрдп рдХреЗрд╡рд▓ рд╕реНрдерд╛рдиреАрдп рдЪрд░ рдореЗрдВ рдореМрдЬреВрдж рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рд╕реНрдЯреНрд░реАрдо рд╕реНрдЯреИрдХ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдХреЗрд╡рд▓ рдирд┐рд╖реНрдкрд╛рджрди рд╕реНрдЯреНрд░реАрдо рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реЛрддреЗ рд╣реИрдВред StatlessFactorizer рдХреЛ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рдзрд╛рдЧрд╛ рджреВрд╕рд░реЗ рдзрд╛рдЧреЗ рдХреЗ рд╕рдорд╛рди рдХрд░рдиреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпреЗ рдзрд╛рдЧреЗ рд░рд╛рдЬреНрдп рдХреЛ рд╕рд╛рдЭрд╛ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред

рдЖрдВрддрд░рд┐рдХ рд╕реНрдерд┐рддрд┐ рд╕рдорд░реНрдерди рдХреЗ рдмрд┐рдирд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣рдореЗрд╢рд╛ рдереНрд░реЗрдб рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реЛрддреЗ рд╣реИрдВред

рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕рд░реНрд╡рд▓реЗрдЯреНрд╕ рдЖрдВрддрд░рд┐рдХ рд░рд╛рдЬреНрдп рд╕рдорд░реНрдерди рдХреЗ рдмрд┐рдирд╛ рд▓рд╛рдЧреВ рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд╕реНрд╡рдпрдВ рд╕рд░реНрд╡рд▓реЗрдЯреНрд╕ рдХреЗ рдкреНрд░рд╕рд╛рд░ рдХреЗ рдмреЛрдЭ рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИред рдФрд░ рдХреЗрд╡рд▓ рдЬрдм рд╕рд░реНрд╡рд▓реЗрдЯреНрд╕ рдХреЛ рдХреБрдЫ рдпрд╛рдж рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рддреЛ рдЙрдирдХреЗ рдереНрд░реЗрдб рд╕реБрд░рдХреНрд╖рд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдВ рдмрдврд╝ рдЬрд╛рддреА рд╣реИрдВред

2.2ред atomicity


рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдЖрдВрддрд░рд┐рдХ рд╕реНрдерд┐рддрд┐ рдХреЗ рд╕рдорд░реНрдерди рдХреЗ рдмрд┐рдирд╛ рдПрдХ рд░рд╛рдЬреНрдп рд╡рд╕реНрддреБ рдХреЛ рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ? рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдо рдПрдХ рд╣рд┐рдЯ рдХрд╛рдЙрдВрдЯрд░ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдП рдЧрдП рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдорд╛рдкрддрд╛ рд╣реИред рдЖрдк рд╕рд░реНрд╡рд▓реЗрдЯ рдореЗрдВ рдЯрд╛рдЗрдк рдХреЗ рд▓рдВрдмреЗ рдХреНрд╖реЗрддреНрд░ рдХреЛ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд░реЛрдз рдХреЗ рд╕рд╛рде рдЗрд╕реЗ рдмрдврд╝рд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреИрд╕рд╛ рдХрд┐ рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ 2.2 рдореЗрдВ UnsafeCountingFactorizer рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред

рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ 2.2ред рдПрдХ рд╕рд░реНрд╡рд▓реЗрдЯ рдЬреЛ рдЖрд╡рд╢реНрдпрдХ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рдХреЗ рдмрд┐рдирд╛ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдЧрд┐рдирд╛рддрд╛ рд╣реИред рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЫрд╡рд┐

@NotThreadSafe
public class UnsafeCountingFactorizer implements Servlet {
      private long count = 0;

      public long getCount() { return count; }

      public void service(ServletRequest req, ServletResponse resp) {
            BigInteger i = extractFromRequest(req);
            BigInteger[] factors = factor(i);
            ++count;
            encodeIntoResponse(resp, factors);
      }
}

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, UnsafeCountingFactorizer рд╡рд░реНрдЧ рдереНрд░реЗрдб рд╕реБрд░рдХреНрд╖рд┐рдд рдирд╣реАрдВ рд╣реИ, рднрд▓реЗ рд╣реА рдпрд╣ рдПрдХрд▓-рдереНрд░реЗрдбреЗрдб рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реЛред UnsafeSequence рдХреА рддрд░рд╣, рдпрд╣ рдЕрджреНрдпрддрди рдЦреЛ рдЬрд╛рдиреЗ рдХрд╛ рдЦрддрд░рд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╡реГрджреНрдзрд┐ рдСрдкрд░реЗрд╢рди ++ рдХрд╛рдЙрдВрдЯ рдореЗрдВ рдПрдХ рдХреЙрдореНрдкреИрдХреНрдЯ рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╣реЛрддрд╛ рд╣реИ, рдпрд╣ рдкрд░рдорд╛рдгреБ рдирд╣реАрдВ рд╣реИ, рдЕрд░реНрдерд╛рдд, рдЕрд╡рд┐рднрд╛рдЬреНрдп рд╣реИ, рд▓реЗрдХрд┐рди рддреАрди рдСрдкрд░реЗрд╢рдиреЛрдВ рдХрд╛ рдПрдХ рдХреНрд░рдо рд╣реИ: рд╡рд░реНрддрдорд╛рди рдореВрд▓реНрдп рдкрд╣реБрдВрдЪрд╛рдирд╛, рдЗрд╕рдореЗрдВ рдПрдХ рдЬреЛрдбрд╝рдирд╛ рдФрд░ рдирдпрд╛ рдорд╛рди рд╡рд╛рдкрд╕ рд▓рд┐рдЦрдирд╛ред "рд░реАрдб, рдЪреЗрдВрдЬ, рд░рд╛рдЗрдЯ" рдСрдкрд░реЗрд╢рдВрд╕ рдореЗрдВ, рдкрд░рд┐рдгрд╛рдореА рд╕реНрдерд┐рддрд┐ рдкрд┐рдЫрд▓реЗ рдПрдХ рд╕реЗ рд▓реА рдЧрдИ рд╣реИред

рдЕрдВрдЬреАрд░ рдореЗрдВред 1.1 рдпрд╣ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЕрдЧрд░ рджреЛ рдзрд╛рдЧреЗ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдХрд╛рдЙрдВрдЯрд░ рдХреЛ рдмрдврд╝рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ, рдмрд┐рдирд╛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рдХреЗред рдпрджрд┐ рдХрд╛рдЙрдВрдЯрд░ 9 рд╣реИ, рддреЛ рдЕрд╕рдлрд▓ рд╕рдордп рд╕рдордиреНрд╡рдп рдХреЗ рдХрд╛рд░рдг, рджреЛрдиреЛрдВ рдереНрд░реЗрдбреНрд╕ рдорд╛рди 9 рджреЗрдЦреЗрдВрдЧреЗ, рдЗрд╕рдореЗрдВ рдПрдХ рдЬреЛрдбрд╝реЗрдВ, рдФрд░ рдорд╛рди рдХреЛ 10 рдкрд░ рд╕реЗрдЯ рдХрд░реЗрдВред рдЗрд╕рд▓рд┐рдП рд╣рд┐рдЯ рдХрд╛рдЙрдВрдЯрд░ рдПрдХ рд╕реЗ рдкрд┐рдЫрдбрд╝рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрдЧрд╛ред

рдЖрдк рд╕реЛрдЪ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╡реЗрдм рд╕реЗрд╡рд╛ рдореЗрдВ рдереЛрдбрд╝рд╛ рдЧрд▓рдд рд╣рд┐рдЯ рдХрд╛рдЙрдВрдЯрд░ рдПрдХ рд╕реНрд╡реАрдХрд╛рд░реНрдп рдиреБрдХрд╕рд╛рди рд╣реИ, рдФрд░ рдХрднреА-рдХрднреА рдпрд╣ рд╣реЛрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдЕрдиреБрдХреНрд░рдо рдпрд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдЙрдВрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдХрдИ рд╕рдХреНрд░рд┐рдпрдгреЛрдВ рд╕реЗ рд╕рдорд╛рди рдореВрд▓реНрдп рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рд╕реЗ рдЧрдВрднреАрд░ рдЕрдЦрдВрдбрддрд╛ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВред рдПрдХ рджреМрдбрд╝ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЕрд╕рдлрд▓ рд╕рдордп рд╕рдордиреНрд╡рдп рдХреЗ рдХрд╛рд░рдг рдЧрд▓рдд рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдкреИрджрд╛ рд╣реЛрддреА рд╣реИред

2.2.1ред рджреМрд░ рдХрд┐ рд╢рд░реНрддреЗ


UnsafeCountingFactorizer рд╡рд░реНрдЧ рдореЗрдВ рдХрдИ рджреМрдбрд╝ рд╕реНрдерд┐рддрд┐рдпрд╛рдВ (4) рд╣реИрдВ ред рд╕рдмрд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдХрд╛рд░ рдХреА рджреМрдбрд╝ рдХреА рд╕реНрдерд┐рддрд┐ "рдЬрд╛рдВрдЪ рдФрд░ рдлрд┐рд░ рдХрд╛рд░реНрдп" рд╕реНрдерд┐рддрд┐ рд╣реИ, рдЬрд╣рд╛рдВ рдПрдХ рд╕рдВрднрд╛рд╡рд┐рдд рдЕрдкреНрд░рдЪрд▓рд┐рдд рдЕрд╡рд▓реЛрдХрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдпрд╣ рддрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЖрдЧреЗ рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИред

(4) (data race). , . , , , , , . Java. , , . UnsafeCountingFactorizer . 16.

рд╣рдо рдЕрдХреНрд╕рд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЬреАрд╡рди рдореЗрдВ рдПрдХ рджреМрдбрд╝ рдХреА рд╕реНрдерд┐рддрд┐ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рддреЗ рд╣реИрдВред рдорд╛рди рд▓реАрдЬрд┐рдП, рдЖрдк рдпреВрдирд┐рд╡рд░реНрд╕рд┐рдЯреНрд╕реНрдХреА рдкреНрд░реЙрд╕реНрдкреЗрдХреНрдЯ рдкрд░ рд╕реНрдЯрд╛рд░рдмрдХреНрд╕ рдХреИрдлреЗ рдореЗрдВ рджреЛрдкрд╣рд░ рдХреЛ рдПрдХ рджреЛрд╕реНрдд рд╕реЗ рдорд┐рд▓рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдкрддрд╛ рдЪрд▓реЗрдЧрд╛ рдХрд┐ рдпреВрдирд┐рд╡рд░реНрд╕рд┐рдЯреА рдПрд╡реЗрдиреНрдпреВ рдкрд░ рджреЛ рд╕реНрдЯрд╛рд░рдмрдХреНрд╕ рд╣реИрдВред 12:10 рдкрд░ рдЖрдк рдЕрдкрдиреЗ рдорд┐рддреНрд░ рдХреЛ рдХреИрдлреЗ рдП рдореЗрдВ рдирд╣реАрдВ рджреЗрдЦрддреЗ рд╣реИрдВ рдФрд░ рдХреИрдлреЗ рдмреА рдореЗрдВ рдЬрд╛рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡рд╣ рд╡рд╣рд╛рдВ рднреА рдирд╣реАрдВ рд╣реИред рдпрд╛ рддреЛ рдЖрдкрдХреЗ рджреЛрд╕реНрдд рдХреЛ рджреЗрд░ рд╣реЛ рдЧрдИ рд╣реИ, рдпрд╛ рд╡рд╣ рдЖрдкрдХреЗ рдЬрд╛рдиреЗ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рдХреИрдлреЗ рдП рдореЗрдВ рдЖ рдЧрдпрд╛, рдпрд╛ рд╡рд╣ рдХреИрдлреЗ рдмреА рдореЗрдВ рдерд╛, рд▓реЗрдХрд┐рди рдЖрдк рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рдерд╛ рдФрд░ рдЕрдм рдХреИрдлреЗ рдП рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд░рд╛рд╕реНрддреЗ рдкрд░ рд╣реИред рд╣рдо рдмрд╛рдж рд╡рд╛рд▓реЗ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдВрдЧреЗ, рдЬреЛ рдХрд┐ рд╕рдмрд╕реЗ рдЦрд░рд╛рдм рд╕реНрдерд┐рддрд┐ рд╣реИред рдЕрдм 12:15, рдФрд░ рдЖрдк рджреЛрдиреЛрдВ рд╕реЛрдЪ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдЖрдкрдХреЗ рджреЛрд╕реНрдд рдиреЗ рдЕрдкрдирд╛ рд╡рд╛рджрд╛ рдирд┐рднрд╛рдпрд╛ред рдХреНрдпрд╛ рдЖрдк рджреВрд╕рд░реЗ рдХреИрдлреЗ рдореЗрдВ рд▓реМрдЯреЗрдВрдЧреЗ? рдЖрдк рдХрд┐рддрдиреА рдмрд╛рд░ рдЖрдЧреЗ рдФрд░ рдкреАрдЫреЗ рдЬрд╛рдПрдВрдЧреЗ? рдпрджрд┐ рдЖрдк рдПрдХ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдкрд░ рд╕рд╣рдордд рдирд╣реАрдВ рд╣реБрдП рд╣реИрдВ, рддреЛ рдЖрдк рдкреВрд░реЗ рджрд┐рди рдпреВрдирд┐рд╡рд░реНрд╕рд┐рдЯреА рдПрд╡реЗрдиреНрдпреВ рдореЗрдВ рдХреИрдлреАрди рдпреБрдХреНрдд рдЙрддреНрд╕рд╛рд╣ рдореЗрдВ рдШреВрдо рд╕рдХрддреЗ рд╣реИрдВред
"рдЯрд╣рд▓рдиреЗ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рд╣реИ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдХреНрдпрд╛ рд╡рд╣ рд╡рд╣рд╛рдБ рд╣реИ" рджреГрд╖реНрдЯрд┐рдХреЛрдг рдпрд╣ рд╣реИ рдХрд┐ рджреЛ рдХреИрдлреЗ рдХреЗ рдмреАрдЪ рд╕рдбрд╝рдХ рдкрд░ рдЪрд▓рдиреЗ рдореЗрдВ рдХрдИ рдорд┐рдирдЯ рд▓рдЧрддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕ рд╕рдордп рдХреЗ рджреМрд░рд╛рди рд╕рд┐рд╕реНрдЯрдо рдХреА рд╕реНрдерд┐рддрд┐ рдмрджрд▓ рд╕рдХрддреА рд╣реИред

рд╕реНрдЯрд╛рд░рдмрдХреНрд╕ рдХреЗ рд╕рд╛рде рдЙрджрд╛рд╣рд░рдг рдШрдЯрдирд╛рдУрдВ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рд╕рдордп рд╕рдордиреНрд╡рдп рдкрд░ рдкрд░рд┐рдгрд╛рдо рдХреА рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рджрд┐рдЦрд╛рддрд╛ рд╣реИ (рдПрдХ рдХреИрдлреЗ рдореЗрдВ рдЖрдк рдХрд┐рддрдиреЗ рд╕рдордп рддрдХ рдПрдХ рджреЛрд╕реНрдд рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддреЗ рд╣реИрдВ)ред рд╡рд╣ рдЕрд╡рд▓реЛрдХрди рдЬреЛ рд╡рд╣ рдХреИрдлреЗ рдП рдореЗрдВ рдирд╣реАрдВ рд╣реИ, рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдЕрдорд╛рдиреНрдп рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ: рдЬреИрд╕реЗ рд╣реА рдЖрдк рд╕рд╛рдордиреЗ рдХреЗ рджрд░рд╡рд╛рдЬреЗ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рддреЗ рд╣реИрдВ, рд╡рд╣ рдкреАрдЫреЗ рдХреЗ рджрд░рд╡рд╛рдЬреЗ рд╕реЗ рдкреНрд░рд╡реЗрд╢ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЕрдзрд┐рдХрд╛рдВрд╢ рджреМрдбрд╝ рд╕реНрдерд┐рддрд┐рдпрд╛рдВ рдПрдХ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рдЕрдкрд╡рд╛рдж, рдЕрдзрд┐рд▓реЗрдЦрд┐рдд рдбреЗрдЯрд╛ рдФрд░ рдлрд╝рд╛рдЗрд▓ рднреНрд░рд╖реНрдЯрд╛рдЪрд╛рд░ рдЬреИрд╕реА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рдХрд╛рд░рдг рдмрдирддреА рд╣реИрдВред

2.2.2ред рдЙрджрд╛рд╣рд░рдг: рдЖрд▓рд╕реА рдЖрд░рдВрднреАрдХрд░рдг рдореЗрдВ рджреМрдбрд╝ рдХреА рд╕реНрдерд┐рддрд┐


"рдЪреЗрдХ рдФрд░ рдлрд┐рд░ рдПрдХреНрдЯ" рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдПрдХ рдЖрдо рдЪрд╛рд▓ рдЖрд▓рд╕реА рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди (LazyInitRace) рд╣реИред рдЗрд╕рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдЖрд░рдВрднреАрдХрд░рдг рдХреЛ рддрдм рддрдХ рдХреЗ рд▓рд┐рдП рд╕реНрдердЧрд┐рдд рдХрд░рдирд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рди рд╣реЛ, рдФрд░ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдЗрд╕реЗ рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рд╣реА рдЖрд░рдореНрдн рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред 2.3 рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рдиреЗ рдореЗрдВ, getInstance рдкрджреНрдзрддрд┐ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддреА рд╣реИ рдХрд┐ ExpensiveObject рдЖрд░рдВрднреАрдХреГрдд рд╣реИ рдФрд░ рдПрдХ рдореМрдЬреВрджрд╛ рдЙрджрд╛рд╣рд░рдг рджреЗрддрд╛ рд╣реИ, рдпрд╛, рдЕрдиреНрдпрдерд╛, рдПрдХ рдирдпрд╛ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдПрдХ рд╕рдВрджрд░реНрдн рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рдмрд╛рдж рдЗрд╕реЗ рд▓реМрдЯрд╛рддрд╛ рд╣реИред

рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ 2.3ред рджреМрдбрд╝ рдХреА рд╕реНрдерд┐рддрд┐ рдЖрд▓рд╕реА рдЖрд░рдВрднреАрдХрд░рдг рдореЗрдВ рд╣реИред рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЫрд╡рд┐

@NotThreadSafe
public class LazyInitRace {
      private ExpensiveObject instance = null;

      public ExpensiveObject getInstance() {
            if (instance == null)
                instance = new ExpensiveObject();
            return instance;
      }
}

LazyInitRace рд╡рд░реНрдЧ рдореЗрдВ рджреМрдбрд╝ рдХреА рд╕реНрдерд┐рддрд┐ рд╣реЛрддреА рд╣реИред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдереНрд░реЗрдб A рдФрд░ B рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ getInstance рдкрджреНрдзрддрд┐ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдПрдХ рджреЗрдЦрддрд╛ рд╣реИ рдХрд┐ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдлрд╝реАрд▓реНрдб рд╢реВрдиреНрдп рд╣реИ, рдФрд░ рдПрдХ рдирдпрд╛ ExpensiveObject рдмрдирд╛рддрд╛ рд╣реИред рдереНрд░реЗрдб рдмреА рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдЬрд╛рдБрдЪ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдлреАрд▓реНрдб рдПрдХ рд╣реА рдирд▓ рд╣реИред рдЗрд╕ рд╕рдордп рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдЕрд╢рдХреНрдд рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рд╕рдордп рд╕рдордиреНрд╡рдп рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдирд┐рдпреЛрдЬрди рдХреА рдпреЛрдирд┐ рдФрд░ рдПрдХреНрд╕рдкреЗрдВрд╕рд┐рд╡ рдСрдмрдЬреЗрдХреНрдЯ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдиреЗ рдФрд░ рдЖрд╡реГрддреНрддрд┐ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдорд╛рди рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рдордп рдХреА рдорд╛рддреНрд░рд╛ рд╢рд╛рдорд┐рд▓ рд╣реИред рдпрджрд┐ B рдХреЛ рдЪреЗрдХ рдХрд░рддреЗ рд╕рдордп рдЖрд╡реГрддреНрддрд┐ рдлрд╝реАрд▓реНрдб рд░рд┐рдХреНрдд рд╣реИ, рддреЛ getInstance рдкрджреНрдзрддрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рджреЛ рдХреЛрдб рддрддреНрд╡ рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рднрд▓реЗ рд╣реА getInstance рд╡рд┐рдзрд┐ рд╣рдореЗрд╢рд╛ рдПрдХ рд╣реА рдЙрджрд╛рд╣рд░рдг рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рд╡рд╛рд▓реА рд╣реЛред

UnsafeCountingFactorizer рдореЗрдВ рд╣рд┐рдЯ рдХрд╛рдЙрдВрдЯрд░ рдореЗрдВ рджреМрдбрд╝ рдХреА рд╕реНрдерд┐рддрд┐ рднреА рд╣реЛрддреА рд╣реИред "рдкрдврд╝реЛ, рдмрджрд▓реЛ, рд▓рд┐рдЦреЛ" рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдХрд╛рдЙрдВрдЯрд░ рдХреЛ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдзрд╛рд░рд╛ рдХреЛ рдЕрдкрдиреЗ рдкрд┐рдЫрд▓реЗ рдореВрд▓реНрдп рдХреЛ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдХреЛрдИ рдФрд░ рдЕрдкрдбреЗрдЯ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рджреМрд░рд╛рди рдЗрд╕ рдорд╛рди рдХреЛ рдмрджрд▓рддрд╛ рдпрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдЕрдзрд┐рдХрд╛рдВрд╢ рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзреА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рддрд░рд╣, рджреМрдбрд╝ рдХреА рд╕реНрдерд┐рддрд┐ рд╣рдореЗрд╢рд╛ рд╡рд┐рдлрд▓рддрд╛ рдХрд╛ рдХрд╛рд░рдг рдирд╣реАрдВ рдмрдирддреА рд╣реИ: рдЕрд╕реНрдерд╛рдпреА рд╕рдордиреНрд╡рдп рд╕рдлрд▓ рд╣реЛрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдЧрд░ LazyInitRace рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреВрд░реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдХреЛ рддрддреНрдХрд╛рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЬрдм рдпрд╣ рдХрдИ рд╕рдХреНрд░рд┐рдпрдгреЛрдВ рд╕реЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЙрджрд╛рд╣рд░рдг рд▓реМрдЯрд╛рдПрдЧрд╛, рддреЛ рдкрдВрдЬреАрдХрд░рдг рдЦреЛ рдЬрд╛рдПрдВрдЧреЗ рдпрд╛ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдкрдВрдЬреАрдХреГрдд рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕реЗрдЯ рдХреЗ рдкрд░рд╕реНрдкрд░ рд╡рд┐рд░реЛрдзреА рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗред рдпрд╛ рдпрджрд┐ рдбреЗрдЯрд╛ рд╕рдВрд░рдХреНрд╖рдг рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдЗрдХрд╛рдИ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП UnsafeSequence рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡рд╕реНрддреБрдУрдВ рдореЗрдВ рдПрдХ рд╣реА рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдкрд╣рдЪрд╛рди рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдХрд░ рд╕рдХрддрд╛ рд╣реИред

2.2.3ред рдпреМрдЧрд┐рдХ рдХреНрд░рд┐рдпрд╛рдПрдВ


LazyInitRace рдФрд░ UnsafeCountingFactorizer рдореЗрдВ рдСрдкрд░реЗрд╢рди рдХрд╛ рдПрдХ рдХреНрд░рдо рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдкрд░рдорд╛рдгреБ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рд▓реЗрдХрд┐рди рдПрдХ рджреМрдбрд╝ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП, рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреНрдп рдереНрд░реЗрдбреНрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╛рдзрд╛ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рдЬрдмрдХрд┐ рдПрдХ рдзрд╛рдЧрд╛ рдЗрд╕реЗ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддрд╛ рд╣реИред

рдСрдкрд░реЗрд╢рди рдП рдФрд░ рдмреА рдкрд░рдорд╛рдгреБ рд╣реИрдВ рдпрджрд┐, рдзрд╛рдЧрд╛ рдкреНрд░рджрд░реНрд╢рди рдСрдкрд░реЗрд╢рди рдП рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рдСрдкрд░реЗрд╢рди рдмреА рдпрд╛ рддреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рджреВрд╕рд░реЗ рдзрд╛рдЧреЗ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдпрд╛ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рдкреНрд░рджрд░реНрд╢рди рднреА рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

UnsafeSequence рдореЗрдВ рд╡реЗрддрди рд╡реГрджреНрдзрд┐ рдХреА рдХрд╛рд░реНрд░рд╡рд╛рдИ рдЕрдВрдЬреАрд░ рдореЗрдВ рджрд┐рдЦрд╛рдП рдЧрдП рджреМрдбрд╝ рдХреА рд╕реНрдерд┐рддрд┐ рд╕реЗ рдмрдЪрддреА рд╣реИред 1.1ред рд╕рдВрдЪрд╛рд▓рди "рдЬрд╛рдВрдЪ рдФрд░ рдлрд┐рд░ рдХрд╛рд░реНрдп" рдФрд░ "рдкрдврд╝рдирд╛, рдмрджрд▓рдирд╛, рд▓рд┐рдЦрдирд╛" рд╣рдореЗрд╢рд╛ рдкрд░рдорд╛рдгреБ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЙрдиреНрд╣реЗрдВ рдпреМрдЧрд┐рдХ рдХреНрд░рд┐рдпрд╛рдПрдВ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ - рд╕рдВрдЪрд╛рд▓рди рдХреЗ рдЕрдиреБрдХреНрд░рдо рдЬрд┐рдиреНрд╣реЗрдВ рдереНрд░реЗрдб рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░рдорд╛рдгреБ рд░реВрдк рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЕрдЧрд▓реЗ рдЦрдВрдб рдореЗрдВ, рд╣рдо рд▓реЙрдХрд┐рдВрдЧ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ - рдЬрд╛рд╡рд╛ рдореЗрдВ рдирд┐рд░реНрдорд┐рдд рдПрдХ рддрдВрддреНрд░ рдЬреЛ рдкрд░рдорд╛рдгреБрддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдмреАрдЪ, рд╣рдо рдореМрдЬреВрджрд╛ рдереНрд░реЗрдб-рд╕реБрд░рдХреНрд╖рд┐рдд рд╡рд░реНрдЧ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдХреЗ рдХрд┐рд╕реА рдЕрдиреНрдп рддрд░реАрдХреЗ рд╕реЗ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░реЗрдВрдЧреЗ, рдЬреИрд╕рд╛ рдХрд┐ рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ 2.4 рдореЗрдВ рдХрд╛рдЙрдВрдЯрд┐рдВрдЧрдлреИрдХреНрдЯреЛрд░рд┐рдЬрд╝рд░ рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред

рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ 2.4ред рдПрдЯреЙрдорд┐рдХрд▓реЙрдиреНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд░реНрд╡рд▓реЗрдЯ рдХрд╛рдЙрдВрдЯрд┐рдВрдЧ рдЕрдиреБрд░реЛрдз

@ThreadSafe
public class CountingFactorizer implements Servlet {
      private final AtomicLong count = new AtomicLong(0);

      public long getCount() { return count.get(); }

      public void service(ServletRequest req, ServletResponse resp) {
            BigInteger i = extractFromRequest(req);
            BigInteger[] factors = factor(i);
            count.incrementAndGet();
            encodeIntoResponse(resp, factors);
      }
}

Java.util.concurrent.atomic рдкреИрдХреЗрдЬ рдореЗрдВ рдХреНрд▓рд╛рд╕ рд░рд╛рдЬреНрдпреЛрдВ рдХреЗ рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд┐рдП рдкрд░рдорд╛рдгреБ рдЪрд░ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдХрд╛рдЙрдВрдЯрд░ рдкреНрд░рдХрд╛рд░ рдХреЛ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдПрдЯреЙрдорд┐рдХрд▓реЙрдиреНрдЧ рдореЗрдВ рдмрджрд▓рдиреЗ рд╕реЗ, рд╣рдо рдЧрд╛рд░рдВрдЯреА рджреЗрддреЗ рд╣реИрдВ рдХрд┐ рдХрд╛рдЙрдВрдЯрд░ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реА рд╕рднреА рдХреНрд░рд┐рдпрд╛рдПрдВ рдкрд░рдорд╛рдгреБ 1 рд╣реИрдВред рдЪреВрдВрдХрд┐ рд╕рд░реНрд╡рд▓реЗрдЯ рдХреА рд╕реНрдерд┐рддрд┐ рдХрд╛рдЙрдВрдЯрд░ рдХреА рд╕реНрдерд┐рддрд┐ рд╣реИ, рдФрд░ рдХрд╛рдЙрдВрдЯрд░ рдереНрд░реЗрдб рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ, рд╣рдорд╛рд░рд╛ рд╕рд░реНрд╡рд▓реЗрдЯ рдереНрд░реЗрдб рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИред

рдЬрдм рдПрдХ рдПрдХрд▓ рд░рд╛рдЬреНрдп рддрддреНрд╡ рдХреЛ рдПрдХ рд╡рд░реНрдЧ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдЖрдВрддрд░рд┐рдХ рд╕реНрдерд┐рддрд┐ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдкрд░рд┐рдгрд╛рдореА рд╡рд░реНрдЧ рдереНрд░реЗрдб рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реЛрдЧрд╛ рдпрджрд┐ рд░рд╛рдЬреНрдп рдереНрд░реЗрдб рд╕реБрд░рдХреНрд╖рд┐рдд рдСрдмреНрдЬреЗрдХреНрдЯ рджреНрд╡рд╛рд░рд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рд╣реЛрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди, рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдЕрдЧрд▓реЗ рднрд╛рдЧ рдореЗрдВ рджреЗрдЦреЗрдВрдЧреЗ, рдПрдХ рд░рд╛рдЬреНрдп рдЪрд░ рд╕реЗ рджреВрд╕рд░реЗ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рд╢реВрдиреНрдп рд╕реЗ рдПрдХ рддрдХ рд╕рдВрдХреНрд░рдордг рдЬрд┐рддрдирд╛ рд╕рд░рд▓ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

рдЬрд╣рд╛рдВ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛ, рдЕрдкрдиреА рдХрдХреНрд╖рд╛ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореМрдЬреВрджрд╛ рдкрд░рдорд╛рдгреБ-рд╕реБрд░рдХреНрд╖рд┐рдд рд╡рд╕реНрддреБрдУрдВ, рдЬреИрд╕реЗ рдПрдЯреЙрдорд┐рдХрд▓реЙрдиреНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдореМрдЬреВрджрд╛ рдереНрд░реЗрдб-рд╕реБрд░рдХреНрд╖рд┐рдд рд╡рд╕реНрддреБрдУрдВ рдХреА рд╕рдВрднрд╛рд╡рд┐рдд рд╕реНрдерд┐рддрд┐ рдФрд░ рдЕрдиреНрдп рд░рд╛рдЬреНрдпреЛрдВ рдореЗрдВ рдЙрдирдХреЗ рд╕рдВрдХреНрд░рдордг рдХреЛ рдмрдирд╛рдП рд░рдЦрдирд╛ рдЖрд╕рд╛рди рд╣реИ рдФрд░ рдордирдорд╛рдиреЗ рд░рд╛рдЬреНрдп рдЪрд░ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдереНрд░реЗрдб-рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИред

┬╗рдХрд┐рддрд╛рдм рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдкрд░ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рдкреНрд░рдХрд╛рд╢рдХ рдХреА рд╡реЗрдмрд╕рд╛рдЗрдЯ
┬╗ рд╕рд╛рдордЧреНрд░реА
┬╗ рдЕрдВрд╢

рдХреЗ рд▓рд┐рдП Khabrozhiteley рдХреВрдкрди рдкрд░ 25% рдЫреВрдЯ - рдЬрд╛рд╡рд╛

рдкреБрд╕реНрддрдХ рдХреЗ рдХрд╛рдЧрдЬ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рднреБрдЧрддрд╛рди рдХреЗ рдмрд╛рдж, рдПрдХ рдЗрд▓реЗрдХреНрдЯреНрд░реЙрдирд┐рдХ рдкреБрд╕реНрддрдХ рдИ-рдореЗрд▓ рджреНрд╡рд╛рд░рд╛ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИред

All Articles