5 рдЪреАрдЬреЗрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ

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



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



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

рдЕрдиреБрд╡рд╛рджрдХ рдХрд╛ рдиреЛрдЯ 2: рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ, рдЬрд╛рдирдХрд╛рд░ рд▓реЛрдЧ рд╡рд┐рд╖рдп рдкрд░ рд▓рд┐рдВрдХ рдФрд░ рдЬрд╛рдирдХрд╛рд░реА рд╕рд╛рдЭрд╛ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдЦ рдХреА рд╕рд╛рдордЧреНрд░реА рд╕реЗ рдХрдо рджрд┐рд▓рдЪрд╕реНрдк рдирд╣реАрдВ рд╣реИ)



1. рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝реНрдб рдореЗрдердб рдпрд╛ рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝реНрдб рдмреНрд▓реЙрдХ?



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



рдЬрдм JVM рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рд╡рд┐рдзрд┐ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИ, рддреЛ рд░рдирд┐рдВрдЧ рдереНрд░реЗрдб рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ ACC_SYNCHRONIZED рдзреНрд╡рдЬ рдЗрд╕ рд╡рд┐рдзрд┐ рдХреЗ method_info рдкрд░ рд╕реЗрдЯ рд╣реИред рдлрд┐рд░ рдпрд╣ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд░ рд▓реЙрдХ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ, рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд▓реЙрдХ рдХреЛ рд░рд┐рд▓реАрдЬрд╝ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдПрдХ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдзрд╛рдЧрд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд▓реЙрдХ рдХреЛ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИред

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



рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ 1. рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рдХреЗ рд▓рд┐рдП рджреЛ рджреГрд╖реНрдЯрд┐рдХреЛрдгред

рдкреИрдХреЗрдЬ com.geekcap ;

рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╡рд░реНрдЧ рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝реЗрд╢рдиред рдирдореВрдирд╛ {

рдирд┐рдЬреА int i ;



рдкрдмреНрд▓рд┐рдХ рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝реНрдб рдЗрдВрдЯ рд╕рд┐рдВрдХреНрд░реЛрдореЗрдереЛрдбрдЧреЗрдЯ ( ) {

рдореИрдВ рд▓реМрдЯрд╛ ;

}



рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ int рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝ рдХрд░реЗрдВ ( ) {

рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ ( рдпрд╣ ) {

рдореИрдВ рд▓реМрдЯрд╛ ;

}

}

}


рд╕рд┐рдВрдХреНрд░реЛрдореЗрдереЛрдбрдЧреЗрдЯ () рд╡рд┐рдзрд┐ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдмрд╛рдпреЛрдЯреЗрдХ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ:

  0: aload_0
	 1: getfield
	 2: рдПрдирдУрдкреА
	 3: iconst_m1
	 4: ireturn 


рдФрд░ рдпрд╣рд╛рдБ рд╕рд┐рдВрдХреНрд░реЛрдЯреЗрдХреНрд▓реЗрдЯ () рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рдмрд╛рдпрдЯреЗрдХреЛрдб рд╣реИ:

  0: aload_0
	 1: рдбреБрдмрдХреА
	 2: astore_1
	 3: рдирд┐рдЧрд░рд╛рдиреАрдХрд░реНрддрд╛
	 4: aload_0
	 5: getfield
	 6: nop
	 7: iconst_m1
	 8: aload_1
	 9: рдореЛрдирд┐рдЯреЛрд░реЗрдХреНрд╕рд┐рдЯ
	 10: ireturn
	 11: astore_2
	 12: aload_1
	 13: рдореЛрдирд┐рдЯреЛрд░реЗрдХреНрд╕рд┐рдЯ
	 14: aload_2
	 15: рдПрдереНрд░реЛ 


рдПрдХ рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝реНрдб рдмреНрд▓реЙрдХ рдмрдирд╛рдиреЗ рд╕реЗ рдмрд╛рдЗрдЯрдХреЛрдб рдХреА 16 рд▓рд╛рдЗрдиреЗрдВ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рддреА рд╣реИрдВ, рдЬрдмрдХрд┐ рдПрдХ рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝ рдХреА рдЧрдИ рд╡рд┐рдзрд┐ рдХреЗрд╡рд▓ 5 рд╣реА рд▓реМрдЯрддреА рд╣реИред



2. "рдЗрдВрдЯреНрд░рд╛-рдереНрд░реЗрдб" (рдереНрд░реЗрдбрд▓реЛрдХрд▓) рдЪрд░ред



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



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



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



рдЬрдм рдЖрдк рдкреНрд░рддреНрдпреЗрдХ рдереНрд░реЗрдб рдХреЗ рд▓рд┐рдП рдЪрд░ рдЗрдВрд╕реНрдЯреЗрдВрд╕реЗрд╕ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рддреЛ ThreadLocal рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред



3. рдЕрд╕реНрдерд┐рд░ рдЪрд░ред



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



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



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



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



4. рд╡рд╛рд╖реНрдкрд╢реАрд▓ рдмрдирд╛рдо рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ред



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

рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рд╕реБрд░рдХреНрд╖рд┐рдд рдирд╣реАрдВ рд╣реИ:

myVolatileVar ++;


рдЗрд╕ рдХреЛрдб рдХреЛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рднреА рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

int рдЕрд╕реНрдерд╛рдпреА = 0 ;

рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд░реЗрдВ ( myVolatileVar ) {

рдЕрд╕реНрдерд╛рдпреА = myVolatileVar ;

}



рдЕрд╕реНрдерд╛рдпреА ++;



рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд░реЗрдВ ( myVolatileVar ) {

myVolatileVar = рдЕрд╕реНрдерд╛рдпреА ;

}



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



5. рдкрд░рдорд╛рдгреБ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рдЕрджреНрдпрддрдиред



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



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

рдкрд░рдорд╛рдгреБ рдЕрджреНрдпрддрдирдХрд░реНрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред


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



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

рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ 2. рдкреБрд╕реНрддрдХ рд╡рд░реНрдЧред

рдкреИрдХреЗрдЬ com.geeckap.atomicexample ;



рдкрдмреНрд▓рд┐рдХ рдХреНрд▓рд╛рд╕ рдмреБрдХ

{

рдирд┐рдЬреА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдирд╛рдо ;



рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдкреБрд╕реНрддрдХ ( )

{

}



рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдкреБрд╕реНрддрдХ ( рд╕реНрдЯреНрд░рд┐рдВрдЧ рдирд╛рдо )

{

рдпрд╣ ред рдирд╛рдо = рдирд╛рдо ;

}



рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ getName ( )

{

рд╡рд╛рдкрд╕реА рдХрд╛ рдирд╛рдо ;

}



рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╢реВрдиреНрдп рд╕реЗрдЯрдирд╛рдо ( рд╕реНрдЯреНрд░рд┐рдВрдЧ рдирд╛рдо )

{

рдпрд╣ ред рдирд╛рдо = рдирд╛рдо ;

}

}



рдмреБрдХ рдХреНрд▓рд╛рд╕ рд╕рд┐рд░реНрдл рдПрдХ POJO (рд╕рд╛рджреЗ рдкреБрд░рд╛рдиреЗ рдЬрд╛рд╡рд╛ рдСрдмреНрдЬреЗрдХреНрдЯ - рдПрдХ рд╕рд╛рджреЗ рдкреБрд░рд╛рдиреЗ рдЬрд╛рд╡рд╛ рдСрдмреНрдЬреЗрдХреНрдЯ) рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдлрд╝реАрд▓реНрдб рд╣реИ: рдирд╛рдоред



рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ 3. MyObject рдХреНрд▓рд╛рд╕ред

рдкреИрдХреЗрдЬ com.geeckap.atomicexample ;



рдЖрдпрд╛рдд java.util.concurrent.atomic.AtomicReferenceFieldUpdater ;



/ **

*

* @ рд╕реМрджрд░реНрдп рдЪрдордХрддрд╛ рд╣реИ

* /

рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╡рд░реНрдЧ MyObject

{

рдирд┐рдЬреА рд╡рд╛рд╖реНрдкрд╢реАрд▓ рдкреБрд╕реНрддрдХ whatImReading ;



рдирд┐рдЬреА рд╕реНрдерд┐рд░ рдЕрдВрддрд┐рдо AtomicReferenceFieldUpdater < MyObject, рдкреБрд╕реНрддрдХ > updater =

AtomicReferenceFieldUpdaterред newUpdater (

MyObjectред рдХрдХреНрд╖рд╛ , рдкреБрд╕реНрддрдХ ред рд╡рд░реНрдЧ , "whatImReading" ) ;



рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдкреБрд╕реНрддрдХ getWhatImReading ( )

{

whatImReading рд▓реМрдЯрд╛рдПрдВ ;

}



рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╢реВрдиреНрдп рд╕реЗрдЯрд╡реЙрдЯрдЖрдИрдПрдордЖрд░рдбрд┐рдВрдЧ ( рдмреБрдХ рдХреНрдпрд╛ рд╣реИ )

{

//this.whatImReading = whatImReading;

рдЕрдкрдбреЗрдЯрд░ред рддреБрд▓рдирд╛ рдПрд╕реЗрдЯрд╕реЗрдЯ ( рдпрд╣ , рдпрд╣ ред WhatImReading , whatImReading ) ;

}

}



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



AtomicReferenceFieldUpdater


Javadoc рдПрдХ AtomicReferenceFieldUpdater рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ:



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

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



Listing 3 рдореЗрдВ, AtomicReferenceFieldUpdater рдХреЛ NewUpdater рд╡рд┐рдзрд┐ рдХрд╣рдХрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рдЕрдиреНрдп рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рд▓реЗрддреА рд╣реИред

тАв рдлрд╝реАрд▓реНрдб рд╡рд╛рд▓реА рд╡рд╕реНрддреБ рдХрд╛ рд╡рд░реНрдЧ (рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, MyObject)

тАв рд╡рд╕реНрддреБ рдХрд╛ рд╡рд╣ рд╡рд░реНрдЧ рдЬрд┐рд╕реЗ рдкрд░рдорд╛рдгреБ рд░реВрдк рд╕реЗ рдЕрджреНрдпрддрди рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ (рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкреБрд╕реНрддрдХ)

тАв рдкрд░рдорд╛рдгреБ рдЕрджреНрдпрддрди рдХреЗ рд▓рд┐рдП рдХреНрд╖реЗрддреНрд░ рдХрд╛ рдирд╛рдо



рдпрд╣рд╛рдБ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдпрд╣ рд╣реИ рдХрд┐ getWhatImReading рд╡рд┐рдзрд┐ рдХреЛ рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рдХреЗ рдмрд┐рдирд╛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрдмрдХрд┐ setWhatImReading рдХреЛ рдкрд░рдорд╛рдгреБ рдСрдкрд░реЗрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред



4 рдХреА рд╕реВрдЪреА рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ setWhatImReading () рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ рдФрд░ рдпрд╣ рд╕рд╛рдмрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЪрд░ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдмрджрд▓ рд░рд╣рд╛ рд╣реИ:



рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ 4. рдкрд░рдорд╛рдгреБ рдЕрджреНрдпрддрдирдХрд░реНрддрд╛ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдорд╛рдорд▓рд╛ред

рдкреИрдХреЗрдЬ com.geeckap.atomicexample ;



рдЖрдпрд╛рдд org.junit.Assert ;

рдЖрдпрд╛рдд org.junit.Before ;

рдЖрдпрд╛рдд org.junit.Test ;



рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╡рд░реНрдЧ AtomicExampleTest

{

рдирд┐рдЬреА MyObject obj ;



@Before

рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╢реВрдиреНрдп рд╕реЗрдЯрдЕрдк ( )

{

obj = new MyObject ( ) ;

objред setWhatImReading ( рдирдИ рдкреБрд╕реНрддрдХ ( "рд╕реНрдХреНрд░реИрдЪ рд╕реЗ рдЬрд╛рд╡рд╛ 2" ) ) ;

}



@Test

рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╢реВрдиреНрдп рдЯреЗрд╕реНрдЯрдЕрдкрдбреЗрдЯ ( )

{

objред setWhatImReading ( рдирдИ рдкреБрд╕реНрддрдХ (

"рдкреНрд░реЛ рдЬрд╛рд╡рд╛ рдИрдИ 5 рдкреНрд░рджрд░реНрд╢рди рдкреНрд░рдмрдВрдзрди рдФрд░ рдЕрдиреБрдХреВрд▓рди" ) ) ;

рдЬреЛрд░ рджреЗрддреЗ рд╣реИрдВ ред рджрд╛рд╡рд╛ ( "рдЧрд▓рдд рдкреБрд╕реНрддрдХ рдирд╛рдо" )

"рдкреНрд░реЛ рдЬрд╛рд╡рд╛ рдИрдИ 5 рдкреНрд░рджрд░реНрд╢рди рдкреНрд░рдмрдВрдзрди рдФрд░ рдЕрдиреБрдХреВрд▓рди"

objред getWhatImReading ( ) ред getName ( ) ) ;

}



}





рдирд┐рд╖реНрдХрд░реНрд╖ рдореЗрдВред



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



All Articles