JSR 133 (рдЬрд╛рд╡рд╛ рдореЗрдореЛрд░реА рдореЙрдбрд▓) FAQ (рдЕрдиреБрд╡рд╛рдж)

рд╢реБрдн рджреЛрдкрд╣рд░

рдЬрд╛рд╡рд╛ рдХреЛрд░реНрд╕ рдореЗрдВ рдорд▓реНрдЯреАрдХреЛрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВ рдЬрд╛рд╡рд╛ рдореЗрдВ рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ рдкрд░ рдХреНрд▓рд╛рд╕рд┐рдХ рд▓реЗрдЦреЛрдВ рдХреЗ рдЕрдиреБрд╡рд╛рджреЛрдВ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ рдХрд╛ рдХреЛрдИ рднреА рдЕрдзреНрдпрдпрди рдореЗрдореЛрд░реА рдореЙрдбрд▓ рдореЗрдВ рдЬрд╛рд╡рд╛ (рдиреНрдпреВ рдЬреЗрдПрдордПрдо) рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рд╢реБрд░реВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдореЙрдбрд▓ рдХреЗ рд▓реЗрдЦрдХреЛрдВ рдХрд╛ рдореБрдЦреНрдп рд╕реНрд░реЛрдд "рдЬрд╛рд╡рд╛ рдореЗрдореЛрд░реА рдореЙрдбрд▓" рд╣реЛрдо рдкреЗрдЬ рд╣реИ , рдЬрд╣рд╛рдВ рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдЬреЗрдПрд╕рдЖрд░ 133 (рдЬрд╛рд╡рд╛ рдореЗрдореЛрд░реА рдореЙрдбрд▓) рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реЛрдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП рдЗрд╕ рд▓реЗрдЦ рдХреЗ рдЕрдиреБрд╡рд╛рдж рдХреЗ рд╕рд╛рде, рдореИрдВрдиреЗ рд╢реНрд░реГрдВрдЦрд▓рд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред

рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдЖрдк рдХреЛ "рдЕрдкрдиреЗ рджрдо рдкрд░" рдХреБрдЫ рд╕рдореНрдорд┐рд▓рди рдХреА рдЕрдиреБрдорддрд┐ рджреА, рдЬреЛ рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕реНрдкрд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВред

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

рдпрд╣ рд▓реЗрдЦ "рд╡реНрдпрд╛рдЦреНрдпрд╛рди # 5.2: рдЬреЗрдПрдордПрдо (рдЕрд╕реНрдерд┐рд░, рдЕрдВрддрд┐рдо, рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝)" рд╡реНрдпрд╛рдЦреНрдпрд╛рди рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рд╕рд╛рдордЧреНрд░реА рдХреЗ рд░реВрдк рдореЗрдВ рднреА рдЙрдкрдпреБрдХреНрдд рд╣реИред



рдореИрдВ рдСрдирд▓рд╛рдЗрди рд╢рд┐рдХреНрд╖рд╛ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо udemy.com (рдХреМрд░рд╕реЗрд░рд╛ / рдПрдбрдПрдХреНрд╕ рдХреЗ рд╕рдорд╛рди) рдкрд░ рдЬрд╛рд╡рд╛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛрд░реНрд╕ рдХреЗ рд▓рд┐рдП рд╕реНрдХрд╛рд▓рд╛ рднреА рд╕рд┐рдЦрд╛рддрд╛ рд╣реВрдВред



рдЕрдЪреНрдЫрд╛ рдФрд░ рд╣рд╛рдБ, рдореЗрд░реЗ рд╕рд╛рде рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдЖрдУ!




JSR 133 (рдЬрд╛рд╡рд╛ рдореЗрдореЛрд░реА рдореЙрдбрд▓) FAQ



рдЬреЗрд░реЗрдореА рдореИрдирд╕рди рдФрд░ рдмреНрд░рд╛рдпрди рдЧреЛрдПрддреНрдЬрд╝, рдлрд░рд╡рд░реА 2004



рд╕рд╛рдордЧреНрд░реА:

рдореЗрдореЛрд░реА рдореЙрдбрд▓ рдХреНрдпрд╛ рд╣реИ, рдЖрдЦрд┐рд░рдХрд╛рд░ рдХреНрдпрд╛ рд╣реИ?

рдХреНрдпрд╛ рдЕрдиреНрдп рднрд╛рд╖рд╛рдПрдБ, рдЬреИрд╕реЗ рдХрд┐ C ++, рдореЗрдВ рдПрдХ рдореЗрдореЛрд░реА рдореЙрдбрд▓ рд╣реИ?

JSR 133 рдХреНрдпрд╛ рд╣реИ?

"рд░рд┐рдбрд░рд┐рдВрдЧ" рд╕реЗ рдХреНрдпрд╛ рдЕрднрд┐рдкреНрд░рд╛рдп рд╣реИ?

рдкреБрд░рд╛рдиреЗ рдореЗрдореЛрд░реА рдореЙрдбрд▓ рдореЗрдВ рдХреНрдпрд╛ рдЧрд▓рдд рдерд╛?

"рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝" рд╕реЗ рдЖрдкрдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ?

рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ?

рдРрд╕рд╛ рдХреИрд╕реЗ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЕрдВрддрд┐рдо рдХреНрд╖реЗрддреНрд░ рдорд╛рдиреЛрдВ рдХреЛ рдмрджрд▓ рджреЗрдВ?

рдирдП JMM рдХреЗ рддрд╣рдд рдЕрдВрддрд┐рдо рдлрд╝реАрд▓реНрдб рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ?

рдЕрд╕реНрдерд┐рд░ рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ?

рдХреНрдпрд╛ рдирдП рдбрдмрд▓-рдЪреЗрдХрд┐рдВрдЧ рд▓реЙрдХрд┐рдВрдЧ рдореЗрдореЛрд░реА рдореЙрдбрд▓ рдиреЗ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛?

рдЕрдЧрд░ рдореИрдВ рдПрдХ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рд▓рд┐рдЦреВрдВ рддреЛ рдХреНрдпрд╛ рд╣реЛрдЧрд╛?

рдореБрдЭреЗ рдХреНрдпреЛрдВ рдкрд░реЗрд╢рд╛рди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП?





рдореЗрдореЛрд░реА рдореЙрдбрд▓ рдХреНрдпрд╛ рд╣реИ, рдЖрдЦрд┐рд░рдХрд╛рд░ рдХреНрдпрд╛ рд╣реИ?



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



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



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



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



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



рдЗрд╕рдХрд╛ рдПрдХ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ рдореЗрдВ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

class Reordering { int x = 0, y = 0; public void writer() { x = 1; y = 2; } public void reader() { int r1 = y; int r2 = x; } }
      
      







рдорд╛рди рд▓реЗрддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕ рдХреЛрдб рдХреЛ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рджреЛ рдереНрд░реЗрдбреНрд╕ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ 'y' рдорд╛рди рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП 2 рд╡рд╛рдкрд╕ рдЖрддрд╛ рд╣реИред рдЪреВрдБрдХрд┐ рдпрд╣ рд░рд┐рдХреЙрд░реНрдб 'x' рдореЗрдВ рд▓рд┐рдЦрдиреЗ рдХреЗ рдмрд╛рдж рд╕реНрдерд┐рдд рд╣реИ, рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдорд╛рди рд╕рдХрддрд╛ рд╣реИ рдХрд┐ 'x' рдХреЛ рдкрдврд╝рдиреЗ рд╕реЗ рдорд╛рди 1 рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рд╛рд▓рд╛рдБрдХрд┐, рд░рд┐рдХреЙрд░реНрдб 'x' рдФрд░ 'y' рдореЗрдВ рдкреБрди: рдХреНрд░рдордмрджреНрдз рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рдРрд╕рд╛ рд╣реЛрддрд╛, рддреЛ 'y' рдХреЛ рд▓рд┐рдЦрдирд╛ рд╣реЛ рд╕рдХрддрд╛ рдерд╛, рдлрд┐рд░ рджреЛрдиреЛрдВ рдЪрд░ рдХреЛ рдкрдврд╝рдирд╛, рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рд╣реА 'x' рдХреЛ рд▓рд┐рдЦрдирд╛ред рдкрд░рд┐рдгрд╛рдо рдпрд╣ рд╣реЛрдЧрд╛ рдХрд┐ r1 рдХрд╛ рдорд╛рди 2 рд╣реИ рдФрд░ r2 рдХрд╛ рдорд╛рди 0 рд╣реИред

рдЕрдиреБрд╡рд╛рджрдХ рдЯрд┐рдкреНрдкрдгреА
рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдПрдХ рд╣реА рд╡рд╕реНрддреБ рдХреЗ рд▓рд┐рдП, рдкрд╛рдардХ () рд╡рд┐рдзрд┐ рдФрд░ рд▓реЗрдЦрдХ () рд╡рд┐рдзрд┐ "рд▓рдЧрднрдЧ рдПрдХ рд╕рд╛рде" рдЕрд▓рдЧ-рдЕрд▓рдЧ рдзрд╛рдЧреЗ рд╕реЗ рдХрд╣рддреЗ рд╣реИрдВред



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



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



рдХреНрдпрд╛ рдЕрдиреНрдп рднрд╛рд╖рд╛рдПрдБ, рдЬреИрд╕реЗ рдХрд┐ C ++, рдореЗрдВ рдПрдХ рдореЗрдореЛрд░реА рдореЙрдбрд▓ рд╣реИ?



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

рдЕрдиреБрд╡рд╛рджрдХ рдЯрд┐рдкреНрдкрдгреА
рдЬрд╛рд╡рд╛ рдиреЗ рдореЗрдореЛрд░реА рдореЙрдбрд▓ рдХреЛ рднрд╛рд╖рд╛ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдореЗрдВ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╡реГрддреНрддрд┐ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреА, рдФрд░ рдирд╡реАрдирддрдо рд╕реА ++ 11 рдорд╛рдирдХ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдореЗрдореЛрд░реА рдореЙрдбрд▓ (рдЕрдзреНрдпрд╛рдп 1.7, "рд╕реА ++ рдореЗрдореЛрд░реА рдореЙрдбрд▓") рд╣реИ ред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ C11 рдХреЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣реИред





JSR 133 рдХреНрдпрд╛ рд╣реИ?



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

рдЕрдиреБрд╡рд╛рджрдХ рдЯрд┐рдкреНрдкрдгреА
рдкреБрд░рд╛рдиреЗ рдореЗрдореЛрд░реА рдореЙрдбрд▓ (рдУрд▓реНрдб рдЬреЗрдПрдордПрдо, рдЬрд╛рд╡рд╛ 5 рд╕реЗ рдкрд╣рд▓реЗ) рдХреЛ "рдЕрдзреНрдпрд╛рдп 17. рдереНрд░реЗрдбреНрд╕ рдФрд░ рд▓реЙрдХреНрд╕" рднрд╛рд╖рд╛ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдХреЗ рдЕрдзреНрдпрд╛рдп 17 рдореЗрдВ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдирдпрд╛ рдореЗрдореЛрд░реА рдореЙрдбрд▓ (рдЬрд╛рд╡рд╛ 5 рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓рд╛ рдирдпрд╛ JMM) рднрд╛рд╖рд╛ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдХреЗ рдЕрдзреНрдпрд╛рдп 17 "рдЕрдзреНрдпрд╛рдп 17. рд╕реВрддреНрд░ рдФрд░ рддрд╛рд▓реЗ" рджреЛрдиреЛрдВ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИ рдФрд░ рдПрдХ рдЕрд▓рдЧ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ (JSR-133) рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдирдпрд╛ рдЬрд╛рдо

рдкреБрд░рд╛рдиреА рдЭрд╛рдореБрдореЛ:





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



рд╢рдмреНрджрд╛рд░реНрде рдХрд╛ рдкреВрд░рд╛ рд╡рд┐рд╡рд░рдг http://www.cs.umd.edu/users/pugh/java/memoryModel рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИ, рд▓реЗрдХрд┐рди рдФрдкрдЪрд╛рд░рд┐рдХ рд╡рд┐рд╡рд░рдг рдбрд░рдкреЛрдХ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рд╣реИред рдпрд╣ рдЖрд╢реНрдЪрд░реНрдп рдХреА рдмрд╛рдд рд╣реИ рдФрд░ рдЬрдм рдЖрдкрдХреЛ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝реЗрд╢рди рдЬреИрд╕реА рд╕рд░рд▓ рдЕрд╡рдзрд╛рд░рдгрд╛ рдХрд┐рддрдиреА рдЬрдЯрд┐рд▓ рд╣реИред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдЖрдкрдХреЛ рдФрдкрдЪрд╛рд░рд┐рдХ рд╢рдмреНрджрд╛рд░реНрде рдХреЗ рд╕рднреА рд╡рд┐рд╡рд░рдгреЛрдВ рдХреЛ рд╕рдордЭрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ - рдЬреЗрдПрд╕рдЖрд░ 133 рдХрд╛ рд▓рдХреНрд╖реНрдп рдПрдХ рдирд┐рдпрдо рд╕реЗрдЯ рдмрдирд╛рдирд╛ рдерд╛ рдЬреЛ рд╕рд╣рдЬ, рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдФрд░ рдЕрдВрддрд┐рдо рдХрд╛рд░реНрдп рдХреА рд╕рд╣рдЬ рд╕рдордЭ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

рдЕрдиреБрд╡рд╛рджрдХ рдЯрд┐рдкреНрдкрдгреА
рд▓реЗрдЦрдХ рдЬрд╛рд╡рд╛ рдореЗрдореЛрд░реА рдореЙрдбрд▓ рдХреЗ "рд╣реЛрдо рдкреЗрдЬ" рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХ рджреЗрддрд╛ рд╣реИ - рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рдореБрдЦреНрдп рд╕реНрд░реЛрддред



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

рдпрд╣ рд▓реЗрдЦ рдФрдкрдЪрд╛рд░рд┐рдХ рд╢рдмреНрджрд╛рд░реНрдереЛрдВ рдХреЗ рд╡рд┐рд╡рд░рдг рдкрд░ рдЪрд░реНрдЪрд╛ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рдХреЗрд╡рд▓ рдХреБрдЫ рд╕рд╣рдЬ рд╡рд┐рд╡рд░рдг рджрд┐рдП рдЬрд╛рдПрдВрдЧреЗред



JSR 133 рдХреЗ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:





"рд░рд┐рдбрд░рд┐рдВрдЧ" рд╕реЗ рдХреНрдпрд╛ рдЕрднрд┐рдкреНрд░рд╛рдп рд╣реИ?



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

рдЕрдиреБрд╡рд╛рджрдХ рдЯрд┐рдкреНрдкрдгреА
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╢рдмреНрдж рдЪрд░ рдХреЗ рддрд╣рдд, рд╣рдо рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдХреНрд╖реЗрддреНрд░реЛрдВ, рд╕реНрдерд┐рд░ рдХреНрд╖реЗрддреНрд░реЛрдВ рдФрд░ рд╕рд░рдгреА рддрддреНрд╡реЛрдВ рдХрд╛ рдорддрд▓рдм рдХрд░реЗрдВрдЧреЗред



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



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



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



рдкреБрд░рд╛рдиреЗ рдореЗрдореЛрд░реА рдореЙрдбрд▓ рдореЗрдВ рдХреНрдпрд╛ рдЧрд▓рдд рдерд╛?



рдкреБрд░рд╛рдиреЗ рдореЗрдореЛрд░реА рдореЙрдбрд▓ рдХреЗ рд╕рд╛рде рдХрдИ рдЧрдВрднреАрд░ рд╕рдорд╕реНрдпрд╛рдПрдВ рдереАрдВред рдпрд╣ рд╕рдордЭрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдерд╛ рдФрд░ рдЗрд╕рд▓рд┐рдП рдЕрдХреНрд╕рд░ рдЙрд▓реНрд▓рдВрдШрди рд╣реЛрддрд╛ рдерд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрдИ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдкреБрд░рд╛рдиреЗ рдореЙрдбрд▓ рдиреЗ рдХрдИ рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреА рдереА рдЬреЛ рдкреНрд░рддреНрдпреЗрдХ рдЬреЗрд╡реАрдПрдо рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдП рдЧрдП рдереЗред рдкреБрд░рд╛рдиреЗ рдореЙрдбрд▓ рдХреЗ рдЕрд░реНрде рдХреЗ рд╕рд╛рде рдпрд╣ рднреНрд░рдо рдЗрд╕ рддрдереНрдп рдХреЛ рдЬрдиреНрдо рджреЗрддрд╛ рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЗрдВ JSR-133 рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред



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

рдЕрдиреБрд╡рд╛рджрдХ рдЯрд┐рдкреНрдкрдгреА
рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдЙрджрд╛рд╣рд░рдг рдиреАрдЪреЗ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╕рдордЭрд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред


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

рдЕрдиреБрд╡рд╛рджрдХ рдЯрд┐рдкреНрдкрдгреА
рдиреАрдЪреЗ рдЕрд╕реНрдерд┐рд░рддрд╛ рдХреЗ рд╕рд╛рде рдЙрджрд╛рд╣рд░рдг рджрд┐рдП рдЧрдП рд╣реИрдВ


рдЕрдВрдд рдореЗрдВ, рдпрджрд┐ рдЙрдирдХреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рддреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░реНрд╕ рдХреА рдзрд╛рд░рдгрд╛рдПрдВ рдЕрдХреНрд╕рд░ рдЧрд▓рдд рд╣реЛрддреА рд╣реИрдВред рдЬреЗрдПрд╕рдЖрд░ -133 рдХрд╛ рдПрдХ рд▓рдХреНрд╖реНрдп рдЗрд╕ рддрдереНрдп рдкрд░ рдзреНрдпрд╛рди рджреЗрдирд╛ рд╣реИред



"рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝" рд╕реЗ рдЖрдкрдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ?



рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд┐рдП рдЧрдП рдХреЛрдб рдХреЗ рддрд╣рдд, рдЕрд▓рдЧ-рдЕрд▓рдЧ рд▓реЛрдЧреЛрдВ рдХрд╛ рдорддрд▓рдм рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЪреАрдЬреЗрдВ рд╣реИрдВред рдЬрдм рд╣рдо рдЬрд╛рд╡рд╛ рдореЗрдореЛрд░реА рдореЙрдбрд▓ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХреЛрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдорд╛рд░рд╛ рдорддрд▓рдм рдХрд┐рд╕реА рднреА рдХреЛрдб рд╕реЗ рд╣реИ:

  1. рдПрдХ рд╕реВрддреНрд░ рдореЗрдВ рдПрдХ рдЪрд░ рд░рд┐рдХреЙрд░реНрдб рд╣реИ,
  2. рд╡рд╣рд╛рдБ рдПрдХ рдФрд░ рдЪрд░ рдХреЗ рджреНрд╡рд╛рд░рд╛ рдПрдХ рд╣реА рдЪрд░ рдХреЗ рдкрдврд╝рдиреЗ рд╣реИ рдФрд░
  3. рдкрдврд╝рдирд╛ рдФрд░ рд▓рд┐рдЦрдирд╛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рджреНрд╡рд╛рд░рд╛ рдЖрджреЗрд╢ рдирд╣реАрдВ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ


рдЬрдм рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рд╣рдо рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕ рдЪрд░ рдкрд░ рдПрдХ рдбреЗрдЯрд╛ рджреМрдбрд╝ рд╣реИред рд╕реНрдЯреНрд░реАрдо рд░реЗрд╕рд┐рдВрдЧ рдкреНрд░реЛрдЧреНрд░рд╛рдо - рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд┐рдП рдЧрдП рдкреНрд░реЛрдЧреНрд░рд╛рдоред

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

рд▓реЗрдХрд┐рди рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд┐рдП рдЧрдП рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЙрдЪрд┐рдд рд╣реИред рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, java.lang.String.hashCode () рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рджреЗрдВ

 public final class String implements Serializable, Comparable<String>, CharSequence { /** Cache the hash code for the string */ private int hash; // Default to 0 ... public int hashCode() { int h = hash; if (h == 0 && count > 0) { ... hash = h; } return h; } ... }
      
      





рдЬрдм рд╣реИрд╢рдХреЛрдб () рд╡рд┐рдзрд┐ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, java.lang рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдгред рд╡рд┐рднрд┐рдиреНрди рдереНрд░реЗрдбреНрд╕ рд╕реЗ рдЕрд▓рдЧ рдХрд░рдиреЗ рдкрд░ рд╣реИрд╢ рдлрд╝реАрд▓реНрдб рдкрд░ рдбреЗрдЯрд╛ рд░реЗрд╕ рд╣реЛрдЧреАред



рд╣рдВрд╕-рдЬреЗ рдХрд╛ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рд▓реЗрдЦред рдмреЛрд╣рдо, "рдиреЛрдВрджреЗрд░реНрдорд┐рдирд┐рд╕реНрдо рдЕрдкрд░рд┐рд╣рд╛рд░реНрдп рд╣реИ, рд▓реЗрдХрд┐рди рдбреЗрдЯрд╛ рджреМрдбрд╝ рд╢реБрджреНрдз рдмреБрд░рд╛рдИ рд╣реИрдВ"

рдФрд░ рд░реВрд╕реА рдореЗрдВ рдЙрд╕рдХреА рдЪрд░реНрдЪрд╛

рд░реБрд╕реНрд▓рд╛рди рдЪреЗрд░рд╛рдорд┐рди, "рдбреЗрдЯрд╛ рджреМрдбрд╝ рд╢реБрджреНрдз рдмреБрд░рд╛рдИ рд╣реИ"





рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ?



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



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



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



рдирдП рдореЗрдореЛрд░реА рдореЙрдбрд▓ рдХреЗ рд╢рдмреНрджрд╛рд░реНрде рд╕реНрдореГрддрд┐ рд╕рдВрдЪрд╛рд▓рди рдкрд░ рдПрдХ рдЖрдВрд╢рд┐рдХ рдЖрджреЗрд╢ (рдПрдХ рдлрд╝реАрд▓реНрдб рдХреЛ рдкрдврд╝рдирд╛, рдПрдХ рдлрд╝реАрд▓реНрдб рд▓рд┐рдЦрдирд╛, рдПрдХ рд▓реЙрдХ рдХреЛ рд▓реЙрдХ рдХрд░рдирд╛ (рдЕрдирд▓реЙрдХ рдХрд░рдирд╛), рдПрдХ рд▓реЙрдХ рдХреЛ рдЕрдирд▓реЙрдХ рдХрд░рдирд╛) рдФрд░ рдереНрд░реЗрдб (рдкреНрд░рд╛рд░рдВрдн (), рдЬреЙрдЗрди ()) рдХреЗ рд╕рд╛рде рдЕрдиреНрдп рдСрдкрд░реЗрд╢рдиреЛрдВ рдХреЛ рдЖрдВрд╢рд┐рдХ рдЖрджреЗрд╢ рджреЗрддрд╛ рд╣реИред рдХреБрдЫ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рджреВрд╕рд░реЛрдВ рд╕реЗ рдкрд╣рд▓реЗ "рд╣реЛрдиреЗ" рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬрдм рдПрдХ рдХреНрд░рд┐рдпрд╛ рджреВрд╕рд░реЗ рдХреЗ "рдкрд╣рд▓реЗ" рд╣реЛрддреА рд╣реИ, рддреЛ рдкрд╣рд▓реЗ рдХреА рдЧрд╛рд░рдВрдЯреА рд╣реЛрдЧреА рдХрд┐ рд╡рд╣ рдкрд╣рд▓реЗ рд╕реНрдерд┐рдд рд╣реЛрдЧреА рдФрд░ рджреВрд╕рд░реЗ рдХреЛ рджрд┐рдЦрд╛рдИ рджреЗрдЧреАред рдЗрд╕ рдЖрджреЗрд╢ рдХреЗ рдирд┐рдпрдо рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИрдВ:

рдЕрдиреБрд╡рд╛рджрдХ рдЯрд┐рдкреНрдкрдгреА
рдЖрдВрд╢рд┐рдХ рдЖрджреЗрд╢ рднрд╛рд╖рдг рдХреА рдмрд╛рд░реА рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рдПрдХ рдЧрдгрд┐рддреАрдп рдЕрд╡рдзрд╛рд░рдгрд╛ рд╣реИред


  1. рдПрдХ рдзрд╛рд░рд╛ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдХреНрд░рд┐рдпрд╛ "рдЗрд╕ рдзрд╛рд░рд╛ рдХреЗ рдХреЛрдб рдореЗрдВ" рдХрдо "рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдЗрд╕ рдзрд╛рд░рд╛ рдореЗрдВ рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЗ рдкрд╣рд▓реЗ" рд╣реЛрддреА рд╣реИред
  2. рдореЙрдиреАрдЯрд░ рдХреА рд░рд┐рд▓реАрдЬрд╝ "рдкреНрд░рддреНрдпреЗрдХ рдореЙрдиреАрдЯрд░ рдХреЗ рдмрд╛рдж рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдХреИрдкреНрдЪрд░" рд╕реЗ рдкрд╣рд▓реЗ рд╣реЛрддреА рд╣реИред
  3. рдПрдХ рдЕрд╕реНрдерд┐рд░ рдХреНрд╖реЗрддреНрд░ рдХреЗ рд▓рд┐рдП рд▓реЗрдЦрди рдПрдХ рд╣реА рдЕрд╕реНрдерд┐рд░ рдХреНрд╖реЗрддреНрд░ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдмрд╛рдж рдХреЗ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП "рдкрд╣рд▓реЗ рд╣реЛрддрд╛ рд╣реИ" рд╣реЛрддрд╛ рд╣реИред
  4. рд░рдирд┐рдВрдЧ рдереНрд░реЗрдб рдореЗрдВ рдХрд┐рд╕реА рднреА рдПрдХреНрд╢рди рдХреЗ "рд╕реНрдЯрд╛рд░реНрдЯ рд╕реЗ рдкрд╣рд▓реЗ" рд╣реЛрддрд╛ рд╣реИред
  5. рдзрд╛рд░рд╛ рдореЗрдВ рд╕рднреА рдХреНрд░рд┐рдпрд╛рдПрдВ "рдкрд╣рд▓реЗ рд╕реЗ рд╣реЛрддреА рд╣реИрдВ" (рдкрд╣рд▓реЗ рд╣реЛрддреА рд╣реИрдВ) рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рдзрд╛рдЧреЗ рдХреА рдХреЛрдИ рдХреНрд░рд┐рдпрд╛ рдЬреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкрд╣рд▓реЗ рдзрд╛рдЧреЗ рдкрд░ рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреЗ () рдкрд░ рдкреНрд░рддреАрдХреНрд╖рд╛ рдкреВрд░реА рдХрд░ рдЪреБрдХреА рд╣реИред


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

рдЕрдиреБрд╡рд╛рджрдХ рдЯрд┐рдкреНрдкрдгреА
рдЗрд╕ рдХрд╛рд░реНрдпрдХреНрд░рдо (рдбреЗрдЯрд╛ - рдЕрд╕реНрдерд┐рд░, рд░рди - рдЕрд╕реНрдерд┐рд░) рдХреЛ рд░реЛрдХрдиреЗ рдФрд░ 1 рдкреНрд░рд┐рдВрдЯ рдХрд░рдиреЗ рдФрд░ рдкреБрд░рд╛рдиреЗ рдФрд░ рдирдП рдореЗрдореЛрд░реА рдореЙрдбрд▓ рдореЗрдВ рдкреНрд░рд┐рдВрдЯ рдХрд░рдиреЗ рдХреА рдЧрд╛рд░рдВрдЯреА рд╣реИ

 public class App { static volatile int data = 0; static volatile boolean run = true; public static void main(String[] args) { new Thread(new Runnable() { public void run() { data = 1; run = false; } }).start(); while (run) {/*NOP*/}; System.out.println(data); } }
      
      







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

 public class App { static int data = 0; static volatile boolean run = true; public static void main(String[] args) { new Thread(new Runnable() { public void run() { data = 1; run = false; } }).start(); while (run) {/*NOP*/}; System.out.println(data); } }
      
      







рдпрд╣ рдХрд╛рд░реНрдпрдХреНрд░рдо (рдбреЗрдЯрд╛ - рдЕрд╕реНрдерд┐рд░, рд░рди - рдирд╣реАрдВ рдЕрд╕реНрдерд┐рд░) рджреЛрдиреЛрдВ рдореЙрдбрд▓ рдореЗрдВ рдмрдВрдж рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдПрдХ рд╕реНрдЯреЙрдк рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдпрд╣ рдкреБрд░рд╛рдиреЗ рдФрд░ рдирдП рдореЗрдореЛрд░реА рдореЙрдбрд▓ рджреЛрдиреЛрдВ рдореЗрдВ 0 рдФрд░ 1 рдкреНрд░рд┐рдВрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рд╣реИ рдХрд┐ рджреЛрдиреЛрдВ рдореЙрдбрд▓реЛрдВ рдореЗрдВ рдЕрд╕реНрдерд┐рд░рддрд╛ рдореЗрдВ рдПрдХ рд░рд┐рдХреЙрд░реНрдб рд╕реЗ рдКрдкрд░ рдЧреИрд░-рд╡рд╛рд╖реНрдкрд╢реАрд▓ рдореЗрдВ рдПрдХ рд░рд┐рдХреЙрд░реНрдб "рдЙрдард╛рдирд╛" рд╕рдВрднрд╡ рд╣реИред

 public class App { static volatile int data = 0; static boolean run = true; public static void main(String[] args) { new Thread(new Runnable() { public void run() { data = 1; run = false; } }).start(); while (run) {/*NOP*/}; System.out.println(data); } }
      
      







рдпрд╣ рдХрд╛рд░реНрдпрдХреНрд░рдо (рдбреЗрдЯрд╛ рдЕрд╕реНрдерд┐рд░ рдирд╣реАрдВ рд╣реИ, рд░рди рдЕрд╕реНрдерд┐рд░ рдирд╣реАрдВ рд╣реИ) рджреЛрдиреЛрдВ рдореЙрдбрд▓реЛрдВ рдореЗрдВ рдмрдВрдж рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдПрдХ рд╕реНрдЯреЙрдк рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдпрд╣ рдкреБрд░рд╛рдиреЗ рдФрд░ рдирдП рдореЗрдореЛрд░реА рдореЙрдбрд▓ рджреЛрдиреЛрдВ рдореЗрдВ 0 рдФрд░ 1 рдкреНрд░рд┐рдВрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

 public class App { static int data = 0; static boolean run = true; public static void main(String[] args) { new Thread(new Runnable() { public void run() { data = 1; run = false; } }).start(); while (run) {/*NOP*/}; System.out.println(data); } }
      
      







рдПрдХ рдФрд░ рдкрд░рд┐рдгрд╛рдо рдпрд╣ рд╣реИ рдХрд┐ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреИрдЯрд░реНрди, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреБрдЫ рд▓реЛрдЧ рдореЗрдореЛрд░реА рдмреИрд░рд┐рдпрд░ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддреЗ рд╣реИрдВ, рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ:

 synchronized (new Object()) {}
      
      





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



рдорд╣рддреНрд╡рдкреВрд░реНрдг рдиреЛрдЯ : рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╕рдВрдмрдВрдз рд╕реВрддреНрд░ рдХреЛ рдареАрдХ рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рджреЛрдиреЛрдВ рдереНрд░реЗрдб рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реА рдореЙрдирд┐рдЯрд░ рдкрд░ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд░рдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдРрд╕рд╛ рддрдм рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдП рдХреЛ рд╕реНрдЯреНрд░реАрдо рдП рдкрд░ рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рд╡рд╛рд▓реА рд╣рд░ рдЪреАрдЬ, рдЬрдм рд╡рд╣ рдСрдмреНрдЬреЗрдХреНрдЯ рдПрдХреНрд╕ рдкрд░ рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝ рдХреА рдЬрд╛рддреА рд╣реИ, рддреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рд╡рд╛рдИ рдкрд░ рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдмреА рд╕реНрдЯреНрд░реАрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреГрд╢реНрдпрдорд╛рди рд╣реЛ рдЬрд╛рддреА рд╣реИред рд░рд┐рд▓реАрдЬ рдФрд░ рдХреИрдкреНрдЪрд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ "рдореИрдЪ" (рдЕрд░реНрдерд╛рдд, рдПрдХ рд╣реА рдореЙрдиреАрдЯрд░ рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред ) рддрд╛рдХрд┐ рд╕рд╣реА рд╢рдмреНрджрд╛рд░реНрде рдкреНрд░рджрд╛рди рдХрд┐рдП рдЬрд╛ рд╕рдХреЗрдВред рдЕрдиреНрдпрдерд╛, рдХреЛрдб рдореЗрдВ рдбреЗрдЯрд╛ рд░реЗрд╕ рд╣реЛрддреА рд╣реИред

рдЕрдиреБрд╡рд╛рджрдХ рдЯрд┐рдкреНрдкрдгреА
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░реЛрдЧреНрд░рд╛рдо рджреЛрдиреЛрдВ рдореЗрдореЛрд░реА рдореЙрдбрд▓ рдХреЗ рднреАрддрд░ рдпрд╛ рддреЛ рдмрдВрдж рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдирд╣реАрдВ рд░реБрдХ рд╕рдХрддреЗ рд╣реИрдВ (рдХреНрдпреЛрдВрдХрд┐ рдореЙрдирд┐рдЯрд░ рдФрд░ рд╡рд┐рднрд┐рдиреНрди рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рдореЙрдирд┐рдЯрд░реЛрдВ рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдереНрд░реЗрдбреНрд╕ рдореЗрдВ рд▓реЙрдХ рдФрд░ рд▓реЙрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ)

 public class App { static Object lockA = new Object(); static Object lockB = new Object(); static boolean run = true; public static void main(String[] args) { new Thread(new Runnable() { public void run() { synchronized (lockA) { run = false; } } }).start(); while (true) { synchronized (lockB) { if (!run) break; } } } }
      
      









рдРрд╕рд╛ рдХреИрд╕реЗ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЕрдВрддрд┐рдо рдХреНрд╖реЗрддреНрд░ рдорд╛рдиреЛрдВ рдХреЛ рдмрджрд▓ рджреЗрдВ?



рдЕрдВрддрд┐рдо рдлрд╝реАрд▓реНрдб рдорд╛рди рдХреИрд╕реЗ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ рдЗрд╕рдХреЗ рд╕рд░реНрд╡реЛрддреНрддрдо рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╢рд╛рдорд┐рд▓ рд╣реИред



рддреАрди рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - рд╡рд░реНрдгреЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА, рдЗрд╕ рд╕рд░рдгреА рдореЗрдВ рдПрдХ рдСрдлрд╕реЗрдЯ рдФрд░ рд▓рдВрдмрд╛рдИред рдЯрд╛рдЗрдк рдЪрд╛рд░ рдХреЗ рдПрдХ рдХреНрд╖реЗрддреНрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЗрд╕ рддрд░рд╣ рд╕реЗ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдЪреБрдирдиреЗ рдХрд╛ рдХрд╛рд░рдг [] рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрдИ рд▓рд╛рдЗрдиреЛрдВ рдФрд░ StringBuffer рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдПрдХ рд╣реА рдЪрд░рд┐рддреНрд░ рд╕рд░рдгреА рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдФрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдСрдмреНрдЬреЗрдХреНрдЯ рдЖрд╡рдВрдЯрди рдФрд░ рдореЗрдореЛрд░реА рдХреЙрдкреА рд╕реЗ рдмрдЪрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИредрдЗрд╕рд▓рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, String.substring () рдкрджреНрдзрддрд┐ рдХреЛ рдПрдХ рдирдпрд╛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдмрдирд╛рдХрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдореВрд▓ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд╕рд╛рде рд╡рд░реНрдгреЛрдВ рдХреЗ рд╕рдорд╛рди рд╕рд░рдгреА рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдмрд╕ рд▓рдВрдмрд╛рдИ рдФрд░ рдСрдлрд╕реЗрдЯ рдлрд╝реАрд▓реНрдб рдореЗрдВ рднрд┐рдиреНрди рд╣реЛрддрд╛ рд╣реИред рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд╕рднреА рддреАрди рдХреНрд╖реЗрддреНрд░ рд╣реИрдВ - рдЕрдВрддрд┐рдоред

рдЕрдиреБрд╡рд╛рджрдХ рдЯрд┐рдкреНрдкрдгреА
Oracle рд╕реЗ JRE 7 рдХреЗ рд▓рд┐рдП 6 рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ java.lang.String рдЗрд╕ рддрд░рд╣ рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ

 public final class String implements Serializable, Comparable<String>, CharSequence { private final char[] value; private final int offset; private final int count; .... }
      
      





update 6 JRE 7 Oracle java.lang.String ( offset count)

. , ┬л┬╗ value ┬л ┬╗ ( ). :

1. null, value тАФ null

2. null, value null, char[] value char-, 0-.



рдЕрдиреБрд╡рд╛рджрдХ рдЯрд┐рдкреНрдкрдгреА
тАФ String.substring(), char[] value

 public final class String implements Serializable, Comparable<String>, CharSequence { private final char[] value; private final int offset; private final int count; .... public String substring(int beginIndex, int endIndex) { .... return new String(offset + beginIndex, endIndex - beginIndex, value); } .... }
      
      







тАФ StringBuffer.toString(), String StringBuffer char[] value

 abstract class AbstractStringBuilder implements Appendable, CharSequence { char[] value; ... } public final class StringBuffer extends AbstractStringBuilder implements Serializable, CharSequence { private final char[] value; private final int offset; private final int count; .... public synchronized String toString() { return new String(value, 0, count); } .... }
      
      







 String s1 = "/usr/tmp"; String s2 = s1.substring(4);
      
      







рд╕реНрдЯреНрд░рд┐рдВрдЧ s2 рдореЗрдВ 4 рдХреА рдПрдХ рдСрдлрд╕реЗрдЯ рдФрд░ 4 рдХреА рд▓рдВрдмрд╛рдИ рд╣реЛрдЧреАред рд▓реЗрдХрд┐рди рдкреБрд░рд╛рдиреЗ рдореЗрдореЛрд░реА рдореЙрдбрд▓ рдореЗрдВ, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдСрдлрд╕реЗрдЯ рд╡реИрд▓реНрдпреВ (0) рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рджреВрд╕рд░реЗ рдереНрд░реЗрдб рдХреЗ рд▓рд┐рдП рд╕рдВрднрд╡ рдерд╛, рдФрд░ рдмрд╛рдж рдореЗрдВ 4. рдХрд╛ рд╕рд╣реА рдорд╛рди рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдПред рдРрд╕рд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИред рдорд╛рдиреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧ "/ usr" рдмрджрд▓ рдЧрдпрд╛ рд╣реИ "/ tmp"ред



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



рдирдП рдореЗрдореЛрд░реА рдореЙрдбрд▓ рдХреЗ рд╕рд╛рде рдЕрдВрддрд┐рдо рдлрд╝реАрд▓реНрдб рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ?



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

рдЕрдиреБрд╡рд╛рджрдХ рдЯрд┐рдкреНрдкрдгреА
final- .

рдЗрддрдирд╛

 public class App { final int k; public App10(int k) { this.k = k; } }
      
      







 public class App { final int k; { this.k = 42; } }
      
      







рдЕрдиреБрд╡рд╛рджрдХ рдЯрд┐рдкреНрдкрдгреА
, ( instance тАФ volatile, ). , "[1, 2]"

 import java.util.Arrays; public class App { final int[] data; public App() { this.data = new int[]{1, 2}; } static App instance; public static void main(String[] args) { new Thread(new Runnable() { public void run() { instance = new App(); } }).start(); while (instance == null) {/*NOP*/} System.out.println(Arrays.toString(instance.data)); } }
      
      







, . , "[1, 0]" "[1, 2]" . , 1 final-.

 import java.util.Arrays; public class App { final int[] data; public App() { this.data = new int[]{1, 0}; this.data[1] = 2; } static App instance; public static void main(String[] args) { new Thread(new Runnable() { public void run() { instance = new App(); } }).start(); while (instance == null) {/*NOP*/} System.out.println(Arrays.toString(instance.data)); } }
      
      







, . , "[1, 2]". 1 final-.

 import java.util.Arrays; public class App { final int[] data; public App() { int[] tmp = new int[]{1, 0}; tmp[1] = 2; this.data = tmp; } static App instance; public static void main(String[] args) { new Thread(new Runnable() { public void run() { instance = new App(); } }).start(); while (instance == null) {/*NOP*/} System.out.println(Arrays.toString(instance.data)); } }
      
      









рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреЗ "рдареАрдХ рд╕реЗ рдирд┐рд░реНрдорд╛рдг" рд╣реЛрдиреЗ рдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ? рдЗрд╕рдХрд╛ рд╕реАрдзрд╛ рд╕рд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рд╕рдВрджрд░реНрдн рдЙрджрд╛рд╣рд░рдг рдирд┐рд░реНрдорд╛рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рддрдХ "рд▓реАрдХ" рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ ( рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реБрд░рдХреНрд╖рд┐рдд рдирд┐рд░реНрдорд╛рдг рддрдХрдиреАрдХ рджреЗрдЦреЗрдВ )ред

рдЕрдиреБрд╡рд╛рджрдХ рдЯрд┐рдкреНрдкрдгреА
( ): ┬л ┬╗ .


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

 class FinalFieldExample { final int x; int y; static FinalFieldExample f; public FinalFieldExample() { x = 3; y = 4; } static void writer() { f = new FinalFieldExample(); } static void reader() { if (f != null) { int i = fx; int j = fy; } } }
      
      





рдЕрдиреБрд╡рд╛рджрдХ рдЯрд┐рдкреНрдкрдгреА
, reader() writer() ┬л ┬╗ .




рдпрд╣ рд╡рд░реНрдЧ рдЗрд╕ рдмрд╛рдд рдХрд╛ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдХрд┐ рдЕрдВрддрд┐рдо рдлрд╝реАрд▓реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдкрд╛рдардХ рдХреЛ рдмреБрд▓рд╛рдиреЗ рд╡рд╛рд▓рд╛ рдзрд╛рдЧрд╛ () рд╡рд┐рдзрд┐ рдПрдлрдПрдХреНрд╕ рдореЗрдВ 3 рдкрдврд╝рдиреЗ рдХреА рдЧрд╛рд░рдВрдЯреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЕрдВрддрд┐рдо рдХреНрд╖реЗрддреНрд░ рд╣реИред рд▓реЗрдХрд┐рди рдЗрд╕рдХреА рдХреЛрдИ рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ y рдореЗрдВ 4 рдкрдврд╝реЗрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ рдЧреИрд░-рдЕрдВрддрд┐рдо рдХреНрд╖реЗрддреНрд░ рд╣реИред рдпрджрд┐ FinalFieldExample рд╡рд░реНрдЧ рдХрд╛ рдирд┐рд░реНрдорд╛рддрд╛ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛:

 public FinalFieldExample() { // bad! x = 3; y = 4; // bad construction - allowing this to escape global.obj = this; }
      
      





рддрдм рдЗрд╕ рдмрд╛рдд рдХреА рдХреЛрдИ рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЬреЛ рдзрд╛рдЧрд╛ рдЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдВрдХ рдХреЛ Global.obj рд╕реЗ рдкрдврд╝рддрд╛ рд╣реИ, рд╡рд╣ x рдХрд╛ 3 рдкрдврд╝реЗрдЧрд╛ред



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



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



рдпрджрд┐ рдЖрдк рдЕрдВрддрд┐рдо рдлрд╝реАрд▓реНрдб рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЗрдПрдирдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╡реНрдпрд╡рд╣рд╛рд░ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реИред

рдЕрдиреБрд╡рд╛рджрдХ рдЯрд┐рдкреНрдкрдгреА
, Reflection API.




рдЕрд╕реНрдерд┐рд░ рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ?



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



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



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

рдЕрдиреБрд╡рд╛рджрдХ рдЯрд┐рдкреНрдкрдгреА
1 (data тАФ volatile, run тАФ volatile)

 public class App { static volatile int data = 0; static volatile boolean run = true; public static void main(String[] args) { new Thread(new Runnable() { public void run() { data = 1; run = false; } }).start(); while (run) {/*NOP*/}; System.out.println(data); } }
      
      





. 1, 0 1 (data тАФ volatile, run тАФ volatile), -volatile ┬л┬╗ volatile, тАФ

 public class App { static int data = 0; static volatile boolean run = true; public static void main(String[] args) { new Thread(new Runnable() { public void run() { data = 1; run = false; } }).start(); while (run) {/*NOP*/}; System.out.println(data); } }
      
      





(run тАФ volatile ┬л┬╗ ). , 1, 0 (data тАФ volatile, run тАФ volatile), -volatile

 public class App { static int data = 0; static boolean run = true; public static void main(String[] args) { new Thread(new Runnable() { public void run() { data = 1; run = false; } }).start(); while (run) {/*NOP*/}; System.out.println(data); } }
      
      





. (run тАФ volatile ┬л┬╗ ). 1

 public class App { static int data = 0; static boolean run = true; public static void main(String[] args) { new Thread(new Runnable() { public void run() { data = 1; run = (data != 1); } }).start(); while (run) {/*NOP*/}; System.out.println(data); } }
      
      





. , 1, 0 (data тАФ volatile, run тАФ volatile), -volatile ┬л┬╗ volatile

 public class App { static volatile int data = 0; static boolean run = true; public static void main(String[] args) { new Thread(new Runnable() { public void run() { data = 1; run = false; } }).start(); while (run) {/*NOP*/}; System.out.println(data); } }
      
      







рдпрд╣рд╛рдБ рдПрдХ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдХрд┐ рдХреИрд╕реЗ рдЕрд╕реНрдерд┐рд░ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ

 class VolatileExample { int x = 0; volatile boolean v = false; public void writer() { x = 42; v = true; } public void reader() { if (v == true) { //uses x - guaranteed to see 42. } } }
      
      





рд╣рдо рдПрдХ рдзрд╛рд░рд╛ рдХреЛ рдПрдХ рд▓реЗрдЦрдХ рдФрд░ рджреВрд╕рд░реЗ рдХреЛ рдкрд╛рдардХ рдХрд╣рддреЗ рд╣реИрдВ ред рд▓реЗрдЦрдХ рдХреЛ v рдореЗрдВ рд░реИрдо рдореЗрдВ рдбреЗрдЯрд╛ рдбрдВрдк "d" рд▓рд┐рдЦрдирд╛ рдФрд░ v рд╕реЗ рдореЗрдореЛрд░реА рдХреЛ рдЗрд╕ рдореВрд▓реНрдп рдХреЛ "рдХреИрдкреНрдЪрд░" рдХрд░рдирд╛ рдкрдврд╝рдирд╛ред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдпрджрд┐ рдкрд╛рдардХ рдлрд╝реАрд▓реНрдб v рдХрд╛ рд╕рд╣реА рдореВрд▓реНрдп рджреЗрдЦрддрд╛ рд╣реИ, рддреЛ рдпрд╣ x рдореЗрдВ рдорд╛рди 42 рдХреЛ рджреЗрдЦрдиреЗ рдХреА рдЧрд╛рд░рдВрдЯреА рднреА рд╣реИред рдпрд╣ рдкреБрд░рд╛рдиреЗ рдореЗрдореЛрд░реА рдореЙрдбрд▓ рдХреЗ рд▓рд┐рдП рд╕рдЪ рдирд╣реАрдВ рдерд╛ (рдкреБрд░рд╛рдиреЗ рдореЗрдВ, рдпрд╣ рдЧреИрд░-рд╡рд╛рд╖реНрдкрд╢реАрд▓ "рд▓реЛрдЕрд░" рд░рд┐рдХреЙрд░реНрдб рдХреЛ рдЕрд╕реНрдерд┐рд░ рдореЗрдВ "рдХрдо" рдХрд░рдирд╛ рд╕рдВрднрд╡ рдерд╛)ред рдпрджрд┐ v рдЕрд╕реНрдерд┐рд░ рдирд╣реАрдВ рдереЗ, рддреЛ рдХрдВрдкрд╛рдЗрд▓рд░ рд▓реЗрдЦрдХ рдореЗрдВ рд▓рд┐рдЦрдиреЗ рдХреЗ рдХреНрд░рдо рдХреЛ рдмрджрд▓ рд╕рдХрддрд╛ рдерд╛ , рдФрд░ рдкрд╛рдардХ x рдореЗрдВ 0 рджреЗрдЦ рд╕рдХрддрд╛ рдерд╛ред

рдЕрдиреБрд╡рд╛рджрдХ рдЯрд┐рдкреНрдкрдгреА
Joshua Bloch ┬лEffective Java┬╗ 2nd edition (Item 66: Synchronize access to shared mutable data) ┬лJava. ┬╗ 1 ( 48. )




рд╡рд╛рд╖реНрдкрд╢реАрд▓ рд╢рдмреНрджрд╛рд░реНрде рдХрд╛рдлреА рдмрдврд╝рд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓рдЧрднрдЧ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХреЗ рд╕реНрддрд░ рддрдХред рджреГрд╢реНрдпрддрд╛ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдЕрд╕реНрдерд┐рд░ рдкрдврд╝рдиреЗ рдпрд╛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ "рдЖрдзрд╛" рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред



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



рдХреНрдпрд╛ рдирдП рдбрдмрд▓-рдЪреЗрдХ рд▓реЙрдХрд┐рдВрдЧ рдореЗрдореЛрд░реА рдореЙрдбрд▓ рдиреЗ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛?



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

 // double-checked-locking - don't do this! private static Something instance = null; public Something getInstance() { if (instance == null) { synchronized (this) { if (instance == null) instance = new Something(); } } return instance; }
      
      





рдЕрдиреБрд╡рд╛рджрдХ рдЯрд┐рдкреНрдкрдгреА
( , ┬л ┬╗ getInstance() тАФ , this)

 // double-checked-locking - don't do this! public class Something { private static Something instance = null; public static Something getInstance() { if (instance == null) { synchronized (Something.class) { if (instance == null) instance = new Something(); } } return instance; } .... }
      
      





Private Mutex

 // double-checked-locking - don't do this! public class Something { private static final Object lock = new Object(); private static Something instance = null; public static Something getInstance() { if (instance == null) { synchronized (lock) { if (instance == null) instance = new Something(); } } return instance; } .... }
      
      









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



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



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



рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдбрд┐рдорд╛рдВрдб рд╣реЛрд▓реНрдбрд░ рдореБрд╣рд╛рд╡рд░реЗ рдкрд░ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдЬреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рдФрд░ рд╕рдордЭрдиреЗ рдореЗрдВ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИ:

 private static class LazySomethingHolder { public static Something something = new Something(); } public static Something getInstance() { return LazySomethingHolder.something; }
      
      





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

рдЕрдиреБрд╡рд╛рджрдХ рдЯрд┐рдкреНрдкрдгреА


 public class Something { private static Something instance = null; public static Something getInstance() { return LazySomethingHolder.something; } .... private static class LazySomethingHolder { public static Something something = new Something(); } }
      
      







  • LazySomethingHolder.something
  • ┬л┬╗


( ┬л12.4.1. When Initialization Occurs┬╗ ):

A class or interface type T will be initialized immediately before the first occurrence of any one of the following:

  • ...
  • A static field declared by T is assigned.
  • ...


A class or interface will not be initialized under any other circumstance.



┬л12.4.2. Detailed Initialization Procedure┬╗ .





рдЕрдЧрд░ рдореИрдВ рдПрдХ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рд▓рд┐рдЦреВрдВ рддреЛ рдХреНрдпрд╛ рд╣реЛрдЧрд╛?



рдЖрдкрдХреЛ http://gee.cs.oswego.edu/dl/jmm/cookbook.html рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдП ред



рдореБрдЭреЗ рдХреНрдпреЛрдВ рдкрд░реЗрд╢рд╛рди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП?



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




рд╕рдВрдкрд░реНрдХ рд╡рд┐рд╡рд░рдг





рдореИрдВ рдЬрд╛рд╡рд╛ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдСрдирд▓рд╛рдЗрди рдХрд░рддрд╛ рд╣реВрдВ (рдпрд╣рд╛рдВ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдкрд╛рдареНрдпрдХреНрд░рдо рд╣реИрдВ ) рдФрд░ рдЬрд╛рд╡рд╛ рдХреЛрд░ рдХреЛрд░реНрд╕ рдХреЗ рд░реАрдбрд┐рдЬрд╛рдЗрди рдХреЗ рднрд╛рдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рд╕рд╛рдордЧреНрд░реА рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рддрд╛ рд╣реВрдВред рдЖрдк YouTube рдЪреИрдирд▓ рдкрд░ рджрд░реНрд╢рдХреЛрдВ рдХреЗ рд╡реНрдпрд╛рдЦреНрдпрд╛рди рдХреА рд╡реАрдбрд┐рдпреЛ рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╢рд╛рдпрдж рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдЪреИрдирд▓ рдХрд╛ рд╡реАрдбрд┐рдпреЛ рдмреЗрд╣рддрд░ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рд╣реИред



рд╕реНрдХрд╛рдЗрдк: рдЧреЛрд▓реЛрд╡рдЪрдХреНрд░реНрд╕

рдИрдореЗрд▓: GolovachCourses@gmail.com



All Articles