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

- рд▓рд╛рдЗрд╡рд▓реЙрдХ рдПрдХ рдРрд╕реА рд╕реНрдерд┐рддрд┐ рд╣реИ рдЬрд╣рд╛рдВ рдереНрд░реЗрдб рдП рдХреБрдЫ рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдереНрд░реЗрдб рдмреА рдмрдирд╛рддрд╛ рд╣реИ, рдЬреЛ рдмрджрд▓реЗ рдореЗрдВ рдереНрд░реЗрдб рдП рдХреЛ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдХреНрд░рд┐рдпрд╛ рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИ, рдЬреЛ рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рдереНрд░реЗрдб рдмреА рдХреА рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИред рдЪрдХреНрд░реАрдп рдирд┐рд░реНрднрд░рддрд╛ рдкреНрд░рд╛рдкреНрдд рдХреА рдЬрд╛рддреА рд╣реИред рдЗрд╕рдХреА рдкреВрдВрдЫ рдХреЗ рдмрд╛рдж рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ рдХреБрддреНрддреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд▓реНрдкрдирд╛ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред рдбреЗрдбрд▓реЙрдХ рдХреЗ рд╕рдорд╛рди , рдПрдХ рд▓рд╛рдЗрд╡рд▓реЙрдХ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдХрд╛рд░реНрдпрдХреНрд░рдо рдкреНрд░рдЧрддрд┐ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддред рдПрдХ рдЙрдкрдпреЛрдЧреА рдХрд╛рд░реНрд░рд╡рд╛рдИ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдереНрд░реЗрдбреНрд╕ рдЕрд╡рд░реБрджреНрдз рдирд╣реАрдВ рд╣реИрдВред
рдкреНрд░рд╕реНрддреБрдд рд╢рдмреНрджрд╛рд╡рд▓реА рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ рдХреА рджреБрдирд┐рдпрд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдереНрд░реЗрдб рдбрдВрдк рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред
рдЗрди рд╕реНрд░реЛрддреЛрдВ рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддреГрдд рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ:
рдкреНрд░реИрдХреНрдЯрд┐рд╕ рдореЗрдВ рдЬреЗрдПрд▓рдПрд╕ рдФрд░
рдЬрд╛рд╡рд╛ рдХреЙрдирдПрд░реЗрдмрд┐рд▓рд┐рдЯреА рдХреА рдзрд╛рд░рд╛ 17рдЬрд╛рд╡рд╛ рдореЗрдВ рдкреНрд░рд╡рд╛рд╣ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЗрди рд╕рд░рд▓ рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рд╣рдо рдПрдХ рдкрд░реАрдХреНрд╖рдг рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рд╣рдо рдереНрд░реЗрдб рдбрдВрдк рд╕рдВрдХрд▓рд┐рдд рдХрд░реЗрдВрдЧреЗред рд╣рдо рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдбрдВрдк рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВрдЧреЗ рдФрд░ рд╡рд░реНрддрдорд╛рди рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкреНрд░рд╡рд╛рд╣ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЙрдкрдпреЛрдЧреА рдЬрд╛рдирдХрд╛рд░реА рдирд┐рдХрд╛рд▓реЗрдВрдЧреЗред
рдПрдХ рдирдореВрдирд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо рдмрдирд╛рдирд╛
рдереНрд░реЗрдб рдбрдВрдк рдмрдирд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рд╣рдореЗрдВ рдПрдХ рдЬрд╛рд╡рд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдкрд╛рд░рдВрдкрд░рд┐рдХ "рд╣реИрд▓реЛ, рджреБрдирд┐рдпрд╛!" рд╣рдорд╛рд░реЗ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ, рдФрд░ рдЖрд╡реЗрджрди рдХреЗ рдордзреНрдп рдЖрдХрд╛рд░ рдХреЗ рдбрдВрдк рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЬрдЯрд┐рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рд╣рдо рдПрдХ рдХрд╛рдлреА рд╕рд░рд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдПрдВрдЧреЗ рдЬрд┐рд╕рдореЗрдВ рджреЛ рдереНрд░реЗрдбреНрд╕ рдмрдирд╛рдП рдЬрд╛рддреЗ рд╣реИрдВред рдФрд░ рдзрд╛рдЧреЗ рдЧрддрд┐рд░реЛрдз рдореЗрдВ рдорд┐рд▓ рдЬрд╛рддреЗ рд╣реИрдВ:
public class DeadlockProgram { public static void main(String[] args) throws Exception { Object resourceA = new Object(); Object resourceB = new Object(); Thread threadLockingResourceAFirst = new Thread(new DeadlockRunnable(resourceA, resourceB)); Thread threadLockingResourceBFirst = new Thread(new DeadlockRunnable(resourceB, resourceA)); threadLockingResourceAFirst.start(); Thread.sleep(500); threadLockingResourceBFirst.start(); } private static class DeadlockRunnable implements Runnable { private final Object firstResource; private final Object secondResource; public DeadlockRunnable(Object firstResource, Object secondResource) { this.firstResource = firstResource; this.secondResource = secondResource; } @Override public void run() { try { synchronized(firstResource) { printLockedResource(firstResource); Thread.sleep(1000); synchronized(secondResource) { printLockedResource(secondResource); } } } catch (InterruptedException e) { System.out.println("Exception occurred: " + e); } } private static void printLockedResource(Object resource) { System.out.println(Thread.currentThread().getName() + ": locked resource -> " + resource); } } }
рдпрд╣ рдкреНрд░реЛрдЧреНрд░рд╛рдо рджреЛ рд╕рдВрд╕рд╛рдзрди рдмрдирд╛рддрд╛ рд╣реИ: resourceA рдФрд░ resourceB, рдФрд░ рджреЛ рдереНрд░реЗрдб рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ: threadLockingResourceAFirst рдФрд░ threadLockingResourceBFirst, рдЬреЛ рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдЕрд╡рд░реБрджреНрдз рдХрд░рддреЗ рд╣реИрдВред
рдЧрддрд┐рд░реЛрдз рдХрд╛ рдХрд╛рд░рдг рдереНрд░реЗрдбреНрд╕ рджреНрд╡рд╛рд░рд╛ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдПрдХ "рдХреНрд░реЙрд╕" рдЕрд╡рд░реЛрдз рд╣реИред
рдЧрддрд┐рд░реЛрдз рдХреА рдШрдЯрдирд╛ рдХрд╛ рдХрд╛рд░рдг рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ "рдкрд╛рд░рд╕реНрдкрд░рд┐рдХ рд░реВрдк рд╕реЗ" рдЬрдмреНрдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рд╣реИ, рдЕрд░реНрдерд╛рддред threadLockingResourceAFirst рдзрд╛рдЧрд╛ рд░рд┐рд╕реЛрд░реНрд╕рдП рд░рд┐рд╕реЛрд░реНрд╕ рдХреЛ рдХреИрдкреНрдЪрд░ рдХрд░рддрд╛ рд╣реИ, рдереНрд░реЗрдбрд▓реЙрдХрд┐рдВрдЧResourceBFirst рдереНрд░реЗрдб рд░рд┐рд╕реЛрд░реНрд╕рдмреА рд░рд┐рд╕реЛрд░реНрд╕ рдХреИрдкреНрдЪрд░ рдХрд░рддрд╛ рд╣реИред рдЙрд╕рдХреЗ рдмрд╛рдж, threadLockingResourceAFirst, рдЕрдкрдиреЗ рд╕рдВрд╕рд╛рдзрди рдХреЛ рдЬрд╛рд░реА рдХрд┐рдП рдмрд┐рдирд╛, рд╕рдВрд╕рд╛рдзрди рд╕рдВрд╕рд╛рдзрди рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИ, рдФрд░ threadLockingResourceBFirst, рдЕрдкрдиреЗ рд╕рдВрд╕рд╛рдзрди рдХреЛ рдЬрд╛рд░реА рдХрд┐рдП рдмрд┐рдирд╛, рд╕рдВрд╕рд╛рдзрди рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИред рдирддреАрдЬрддрди, рдзрд╛рдЧреЗ рдЕрд╡рд░реБрджреНрдз рд╣реИрдВред рдмреНрд▓реЙрдХрд┐рдВрдЧ рдХреА рдЧрд╛рд░рдВрдЯреА рдХреЗ рд▓рд┐рдП 1s рд╡рд┐рд▓рдВрдм рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИред рдереНрд░реЗрдбреНрд╕ рдЖрд╡рд╢реНрдпрдХ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рдЬрд╛рд░реА рд╣реЛрдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдХрднреА рдирд╣реАрдВ рд╣реЛрдЧрд╛ред
рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ рдЗрд╕ рддрд░рд╣ рд╣реЛрдЧрд╛ (рдкреНрд░рддреНрдпреЗрдХ рд▓реЙрдиреНрдЪ рдХреЗ рд▓рд┐рдП java.lang.Object @ рдХреЗ рдмрд╛рдж рдХреА рд╕рдВрдЦреНрдпрд╛ рдЕрд▓рдЧ рд╣реЛрдЧреА):
Thread-0: locked resource -> java.lang.Object@149bc794 Thread-1: locked resource -> java.lang.Object@17c10009
рдЗрди рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рдмрд╛рдж, рдкреНрд░реЛрдЧреНрд░рд╛рдо рдРрд╕рд╛ рд▓рдЧреЗрдЧрд╛ рдЬреИрд╕реЗ рд╡рд╣ рдЪрд▓ рд░рд╣рд╛ рд╣реИ (рдЗрд╕ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкреВрд░реА рдирд╣реАрдВ рд╣реБрдИ рд╣реИ), рдЬрдмрдХрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛрдИ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдпрд╣ рдЧрддрд┐рд░реЛрдз рджрд┐рдЦрддрд╛ рд╣реИред рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдПрдХ рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ рдбрдВрдк рдмрдирд╛рдиреЗ рдФрд░ рдзрд╛рдЧреЗ рдХреА рд╕реНрдерд┐рддрд┐ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдереНрд░реЗрдб рдбрдВрдк рдЬрдирд░реЗрд╢рди
рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рдПрдХ рдЬрд╛рд╡рд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдереНрд░реЗрдб рдбрдВрдк рдмрдирд╛рддреЗ рд╕рдордп рдХреНрд░реИрд╢ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЧрддрд┐рд░реЛрдз рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ), рдХрд╛рд░реНрдпрдХреНрд░рдо рд╕рдорд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдереНрд░реЗрдб рдбрдВрдк рдкреИрджрд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рд╕рд┐рд░реНрдл рд▓рдЯрдХрд╛ рд╣реБрдЖ рд╣реИред рдРрд╕реЗ рддреНрд░рд┐рд╢рдВрдХреБ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХрд╛ рдПрдХ рдбрдВрдк рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рдХрд╛рд░реНрдпрдХреНрд░рдо рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддред рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЖрдИрдбреА (рдкреАрдЖрдИрдбреА)ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдЬреЗрд╡реАрдПрдо рдкреНрд░реЛрд╕реЗрд╕ рд╕реНрдЯреЗрдЯрд╕ (рдЬреЗрдкреАрдПрд╕) рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рд╕рдВрд╕реНрдХрд░рдг 7 рд╕реЗ рд╢реБрд░реВ рд╣реЛрдХрд░ рдЬрд╛рд╡рд╛ рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдХрд┐рдЯ (рдЬреЗрдбрдбреАрдХреЗ) рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред рд╣рдорд╛рд░реЗ рддреНрд░рд┐рд╢рдВрдХреБ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкреАрдЖрдИрдбреА тАЛтАЛрдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдмрд╕ рдЯрд░реНрдорд┐рдирд▓ (рд╡рд┐рдВрдбреЛрдЬ рдпрд╛ рд▓рд┐рдирдХреНрд╕) рдореЗрдВ jps рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВ:
$ jps 11568 DeadlockProgram 15584 Jps 15636
рдкрд╣рд▓рд╛ рдХреЙрд▓рдо рд░рдирд┐рдВрдЧ рдЬрд╛рд╡рд╛ рдкреНрд░реЛрд╕реЗрд╕ рдХреЗ рд▓рд┐рдП рд▓реЛрдХрд▓ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди (рд▓реЛрдХрд▓ рд╡реАрдПрдо рдЖрдИрдбреА, рдпрд╛рдиреА lvmid) рдХрд╛ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╣реИред рд╕реНрдерд╛рдиреАрдп JVM рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ, lvmid рдЬрд╛рд╡рд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ PID рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред
рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдпрд╣ рдорд╛рди рдКрдкрд░ рдХреЗ рдореВрд▓реНрдп рд╕реЗ рднрд┐рдиреНрди рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред рджреВрд╕рд░рд╛ рдХреЙрд▓рдо рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдирд╛рдо рд╣реИ, рдЬреЛ рдореБрдЦреНрдп рд╡рд░реНрдЧ, рдЬрд╛рд░ рдлрд╝рд╛рдЗрд▓ рдпрд╛ "рдЕрдЬреНрдЮрд╛рдд" рдХреЗ рдмрд░рд╛рдмрд░ рдХреЗ рдирд╛рдо рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рд╕рдм рдЗрд╕ рдмрд╛рдд рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЖрд╡реЗрджрди рдХреИрд╕реЗ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдирд╛рдо рдбреЗрдбрд▓реЙрдХрдкреНрд░реЛрдЧреНрд░рд╛рдо рдЙрди рдореБрдЦреНрдп рд╡рд░реНрдЧреЛрдВ рдХрд╛ рдирд╛рдо рд╣реИ рдЬреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╢реБрд░реВ рд╣реЛрдиреЗ рдкрд░ рд▓реЙрдиреНрдЪ рдХрд┐рдП рдЧрдП рдереЗред рдХрд╛рд░реНрдпрдХреНрд░рдо 11568 рдХреЗ рдкреАрдЖрдИрдбреА тАЛтАЛрд╕реЗ рдКрдкрд░ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдпрд╣ рдЬрд╛рдирдХрд╛рд░реА рдереНрд░реЗрдб рдбрдВрдк рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рдбрдВрдк рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо
jstack рдпреВрдЯрд┐рд▓рд┐рдЯреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рдЬреЛ рдХрд┐ JDK рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ, рд╕рдВрд╕реНрдХрд░рдг 7 рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред рдбрдВрдк рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЕрдкрдиреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ PID рдХреЛ
jstack рдореЗрдВ рдбрд╛рд▓реЗрдВрдЧреЗ рдФрд░ -l рдлреНрд▓реИрдЧ (рд▓рдВрдмреА рд╕реВрдЪреА рдмрдирд╛рдирд╛) рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВрдЧреЗред рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ рдПрдХ рдкрд╛рда рдлрд╝рд╛рдЗрд▓ рдкрд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЕрд░реНрдерд╛рдд thread_dump.txt:
jstack -l 11568 > thread_dump.txt
рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдереНрд░реЗрдб_dump.txt рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╣рдорд╛рд░реЗ рддреНрд░рд┐рд╢рдВрдХреБ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рдереНрд░реЗрдб рдбрдВрдк рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдЧрддрд┐рд░реЛрдз рдХреЗ рдХрд╛рд░рдгреЛрдВ рдХрд╛ рдирд┐рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЬрд╛рдирдХрд╛рд░реА рд╣реЛрддреА рд╣реИред
рдпрджрд┐ рдЬреЗрдбрдбреАрдХреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рдВрд╕реНрдХрд░рдг 7 рддрдХ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдПрдХ рдбрдВрдк рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рд▓рд┐рдирдХреНрд╕ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - -3 рдзреНрд╡рдЬ рдХреЗ рд╕рд╛рде
рдорд╛рд░реЗрдВ ред рдХрд┐рд▓ -3 рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ SIGQUIT рд╕рд┐рдЧреНрдирд▓ рдорд┐рд▓реЗрдЧрд╛ред
рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдХреЙрд▓ рдЗрд╕ рддрд░рд╣ рд╣реЛрдЧрд╛:
kill -3 11568
рд╕рд░рд▓ рдереНрд░реЗрдб рдбрдВрдк рд╡рд┐рд╢реНрд▓реЗрд╖рдг
Thread_dump.txt рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЦреЛрд▓рддреЗ рд╣реБрдП, рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреА рддрд░рд╣ рдХреБрдЫ рджреЗрдЦреЗрдВрдЧреЗ:
2018-06-19 16:44:44
рдкреВрд░реНрдг рдзрд╛рдЧрд╛ рдбрдВрдк рдЬрд╛рд╡рд╛ рд╣реЙрдЯрд╕реНрдкреЙрдЯ (рдЯреАрдПрдо) 64-рдмрд┐рдЯ рд╕рд░реНрд╡рд░ рд╡реАрдПрдо (10.0.1 + 10 рдорд┐рд╢реНрд░рд┐рдд рдореЛрдб):
рдзрд╛рдЧреЗ рд╡рд░реНрдЧ SMR рдЬрд╛рдирдХрд╛рд░реА:
_java_thread_list = 0x00000250e5488a00, рд▓рдВрдмрд╛рдИ = 13, рддрддреНрд╡ = {
0x00000250e4979000, 0x00000250e4982800, 0x00000250e52f2800, 0x00000250e4992800
0x00000250e4995800, 0x00000250e49a5800, 0x00000250e49ae800, 0x00000250e5324000,
0x00000250e54cd800, 0x00000250e54cf000, 0x00000250e54d1800, 0x00000250e54d2000
0x00000250e54d0800
}
"рд╕рдВрджрд░реНрдн рд╣реИрдВрдбрд▓рд░" # 2 рдбреЗрдорди рдкреНрд░рд┐рдпреЛ = 10 os_prio = 2 tid = 0x00000250e4979000 nid = 0x3c28 рд╢рд░реНрдд рдкрд░ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣рд╛ рд╣реИ [0x000000b82a9ff000]
java.lang.Thread.State: RUNNABLE
java.lang.ref.eference.waitForReferencePendingList (java.base@10.0.1/ рдореВрд▓ рд╡рд┐рдзрд┐) рдкрд░
java.lang.ref.eference.processPendingReferences (java.base@10.0.1/Reference.java: 174) рдкрд░
java.lang.ref.eference.access рдкрд░ $ 000 (java.base@10.0.1/Reference.java: 44)
java.lang.ref.eference $ ReferenceHandler.run (java.base@10.0.1/Reference.java: 138) рдкрд░
рд▓реЙрдХ рдХрд┐рдП рдЧрдП рд╕реНрд╡рдпрдВ рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝рд░:
- рдХреЛрдИ рдирд╣реАрдВ
"рдлрд╛рдЗрдирд▓" # 3 рдбреЗрдорди рдкреНрд░рд┐рдпреЛ = 8 os_prio = 1 tid = 0x00000250e4982800 nid = 0x2a54 Object.wait () [0x000000b82aaff000] рдореЗрдВ
java.lang.Thread.State: WAITING (рдСрдмреНрдЬреЗрдХреНрдЯ рдореЙрдиреАрдЯрд░ рдкрд░)
java.lang.Object.wait (java.base@10.0.1/ рдореВрд▓ рд╡рд┐рдзрд┐) рдкрд░
- <0x0000000089509410> (рдПрдХ java.lang.ref.eferenceQueue $ Lock) рдкрд░ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХреА рдЬрд╛ рд░рд╣реА рд╣реИ
java.lang.ref.eferenceQueue.remove (java.base@10.0.1/ReferenceQueue.java: 151) рдкрд░
- рд╡реЗрдЯрд┐рдВрдЧ рдореЗрдВ рдлрд┐рд░ рд╕реЗ рд▓реЙрдХ рдХрд░рдиреЗ рдХрд╛ рдЗрдВрддрдЬрд╝рд╛рд░ () <0x0000000089509410> (a java.lang.ref.eferenceQueue $ Lock)
java.lang.ref.eferenceQueue.remove (java.base@10.0.1/ReferenceQueue.java: 172) рдкрд░
java.lang.ref.inal.Finalizer $ FinalizerThread.run (java.base@10.0.1/Finalizer.java: 216) рдкрд░
рд▓реЙрдХ рдХрд┐рдП рдЧрдП рд╕реНрд╡рдпрдВ рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝рд░:
- рдХреЛрдИ рдирд╣реАрдВ
"рд╕рд┐рдЧреНрдирд▓ рдбрд┐рд╕реНрдкреИрдЪрд░" # 4 рдбреЗрдорди рдкреНрд░рд┐рдпреЛ = 9 os_prio = 2 tid = 0x00000250e52f2800 nid = 0x2184 runnable [0x0000250000000000000]
java.lang.Thread.State: RUNNABLE
рд▓реЙрдХ рдХрд┐рдП рдЧрдП рд╕реНрд╡рдпрдВ рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝рд░:
- рдХреЛрдИ рдирд╣реАрдВ
"рдЕрдЯреИрдЪ рд▓рд┐рд╕рдирд░" # 5 рдбреЗрдорди рдкреНрд░рд┐рдпреЛ = 5 os_prio = 2 tid = 0x00000250e4992800 nid = 0x1624 рд╕реНрдерд┐рддрд┐ рдкрд░ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣рд╛ рд╣реИ [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
рд▓реЙрдХ рдХрд┐рдП рдЧрдП рд╕реНрд╡рдпрдВ рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝рд░:
- рдХреЛрдИ рдирд╣реАрдВ
"C2 CompilerThread0" # 6 рдбреЗрдорди рдкреНрд░рд┐рдпреЛ = 9 os_prio = 2 tid = 0x00000250e4995800 nid = 0x4198 рд╕реНрдерд┐рддрд┐ рдкрд░ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣рд╛ рд╣реИ [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
рдХреЛрдИ рд╕рдВрдХрд▓рди рдХрд╛рд░реНрдп рдирд╣реАрдВ
рд▓реЙрдХ рдХрд┐рдП рдЧрдП рд╕реНрд╡рдпрдВ рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝рд░:
- рдХреЛрдИ рдирд╣реАрдВ
"C2 CompilerThread1" # 7 рдбреЗрдорди рдкреНрд░рд┐рдпреЛ = 9 os_prio = 2 tid = 0x00000250e49a5800 nid = 0x3b98 рд╕реНрдерд┐рддрд┐ рдкрд░ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣рд╛ рд╣реИ [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
рдХреЛрдИ рд╕рдВрдХрд▓рди рдХрд╛рд░реНрдп рдирд╣реАрдВ
рд▓реЙрдХ рдХрд┐рдП рдЧрдП рд╕реНрд╡рдпрдВ рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝рд░:
- рдХреЛрдИ рдирд╣реАрдВ
"C1 CompilerThread2" # 8 рдбреЗрдореЛрдиреЛрди рдкреНрд░рд┐рдпреЛ = 9 os_prio = 2 tid = 0x00000250e49ae800 nid = 0x1a84 рд╕реНрдерд┐рддрд┐ рдкрд░ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣рд╛ рд╣реИ [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
рдХреЛрдИ рд╕рдВрдХрд▓рди рдХрд╛рд░реНрдп рдирд╣реАрдВ
рд▓реЙрдХ рдХрд┐рдП рдЧрдП рд╕реНрд╡рдпрдВ рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝рд░:
- рдХреЛрдИ рдирд╣реАрдВ
"рд╕реНрд╡реАрдкрд░ рдереНрд░реЗрдб" # 9 рдбреЗрдорди рдкреНрд░рд┐рдпреЛ = 9 os_prio = 2 tid = 0x00000250e5324000 nid = 0x5f0 рд░рди рдХрд░рдиреЗ рдпреЛрдЧреНрдп [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
рд▓реЙрдХ рдХрд┐рдП рдЧрдП рд╕реНрд╡рдпрдВ рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝рд░:
- рдХреЛрдИ рдирд╣реАрдВ
"рд╕рд░реНрд╡рд┐рд╕ рдереНрд░реЗрдб" # 10 рдбреЗрдорди рдкреНрд░рд┐рдпреЛ = 9 os_prio = 0 tid = 0x00000250e54cd800 nid = 0x169c runnable [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
рд▓реЙрдХ рдХрд┐рдП рдЧрдП рд╕реНрд╡рдпрдВ рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝рд░:
- рдХреЛрдИ рдирд╣реАрдВ
"рдХреЙрдорди-рдХреНрд▓реАрдирд░" # 11 рдбреЗрдорди рдкреНрд░рд┐рдпреЛ = 8 os_prio = 1 tid = 0x00000250e54cf000 nid = 0x1610 Object.wait рдореЗрдВ () [0x000000b82b2fe000
java.lang.Thread.State: TIMED_WAITING (рдСрдмреНрдЬреЗрдХреНрдЯ рдореЙрдиреАрдЯрд░ рдкрд░)
java.lang.Object.wait (java.base@10.0.1/ рдореВрд▓ рд╡рд┐рдзрд┐) рдкрд░
- <0x000000008943e600> (рдПрдХ java.lang.ref.eferenceQueue $ Lock) рдкрд░ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХреА рдЬрд╛ рд░рд╣реА рд╣реИ
java.lang.ref.eferenceQueue.remove (java.base@10.0.1/ReferenceQueue.java: 151) рдкрд░
- рдкреНрд░рддреАрдХреНрд╖рд╛ рдореЗрдВ рдлрд┐рд░ рд╕реЗ рд▓реЙрдХ рдХрд░рдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ () <0x000000008943e600> (рдПрдХ java.lang.ref.eferenceQueue $ Lock)
jdk.internal.ref.CleanerImpl.run (java.base@10.0.1/CleanerImpl.java: 148 рдкрд░)
java.lang.Thread.run (java.base@10.0.1/Thread.java: 8/8) рдкрд░
jdk.internal.misc.InnocuousThread.run (java.base@10.0.1/InnocuousThread.java: 134) рдкрд░
рд▓реЙрдХ рдХрд┐рдП рдЧрдП рд╕реНрд╡рдпрдВ рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝рд░:
- рдХреЛрдИ рдирд╣реАрдВ
"рдереНрд░реЗрдб -реж" # резреи рдмреЗрд╢реБрдорд╛рд░ = рел рдУрд╕реН_рдкреНрд░рд┐рдпреЛ = реж рдЯреАрдЖрдИрдбреА тАЛтАЛ= реж рдХреНрд╕рдкреЗрд░рд┐рдЯ реирелрежdрел18рез 0режреж рдПрдирдЖрдИрдбреА = режxdec рдореЙрдирд┐рдЯрд░ рдПрдВрдЯреНрд░реА рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣рд╛ рд╣реИ [режxрежрежрежрежрежреж рдмреА bреи рдмреА рекрежрежреж]
java.lang.Thread.State: BLOCKED (рдСрдмреНрдЬреЗрдХреНрдЯ рдореЙрдиреАрдЯрд░ рдкрд░)
рдбреЗрдбрд▓реЙрдХрдкреНрд░реЛрдЧреНрд░рд╛рдо $ рдбреЗрдбрд▓реЙрдХрд░реЗрдВрдмрд▓.рд░реБрдг (рдбреЗрдбрд▓реЙрдХрдкреНрд░реЛрдЧреНрд░рд╛рдо.рдЬрд╛рд╡рд╛:34)
- рд▓реЙрдХ рдХрд░рдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣рд╛ рд╣реИ <0x00000000894465b0> (java.lang.Object)
- рд▓реЙрдХ <0x00000000894465a0> (рдПрдХ java.lang.Object)
java.lang.Thread.run (java.base@10.0.1/Thread.java: 8/8) рдкрд░
рд▓реЙрдХ рдХрд┐рдП рдЧрдП рд╕реНрд╡рдпрдВ рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝рд░:
- рдХреЛрдИ рдирд╣реАрдВ
"рдереНрд░реЗрдб -1" # 13 рдмреЗрд╢рдХреАрдорддреА = 5 os_prio = 0 tid = 0x00000250e54d2000 nid = 0x415c рдореЙрдирд┐рдЯрд░ рдПрдВрдЯреНрд░реА рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣рд╛ рд╣реИ [0x000000b82b5ff000]
java.lang.Thread.State: BLOCKED (рдСрдмреНрдЬреЗрдХреНрдЯ рдореЙрдиреАрдЯрд░ рдкрд░)
рдбреЗрдбрд▓реЙрдХрдкреНрд░реЛрдЧреНрд░рд╛рдо $ рдбреЗрдбрд▓реЙрдХрд░реЗрдВрдмрд▓.рд░реБрдг (рдбреЗрдбрд▓реЙрдХрдкреНрд░реЛрдЧреНрд░рд╛рдо.рдЬрд╛рд╡рд╛:34)
- рд▓реЙрдХ рдХрд░рдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣рд╛ рд╣реИ <0x00000000894465a0> (java.lang.Object)
- рд▓реЙрдХ <0x00000000894465b0> (рдПрдХ java.lang.Object)
java.lang.Thread.run (java.base@10.0.1/Thread.java: 8/8) рдкрд░
рд▓реЙрдХ рдХрд┐рдП рдЧрдП рд╕реНрд╡рдпрдВ рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝рд░:
- рдХреЛрдИ рдирд╣реАрдВ
"рд╡рд┐рдзреНрд╡рдВрд╕ рдЬрд╛рд╡рд╛ рд╡реАрдПрдо" # 14 рдмреЗрд╢реБрдорд╛рд░ = 5 рдУрдПрд╕_рдкреНрд░рд┐рдпреЛ = 0 рдЯрд┐рдб = 0x00000250e54d0800 nid = 0x2b8c рд╢рд░реНрдд рдкрд░ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдирд╛ [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
рд▓реЙрдХ рдХрд┐рдП рдЧрдП рд╕реНрд╡рдпрдВ рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝рд░:
- рдХреЛрдИ рдирд╣реАрдВ
"VM рдереНрд░реЗрдб" os_prio = 2 tid = 0x00000250e496d800 nid = 0x1920 рд░рди рдХрд░рдиреЗ рдпреЛрдЧреНрдп
"GC рдереНрд░реЗрдб # 0" os_prio = 2 tid = 0x00000250c35b5800 nid = 0x310c runnable
"GC рдереНрд░реЗрдб # 1" os_prio = 2 tid = 0x00000250c35b8000 nid = 0x12b4 runnable
"GC рдереНрд░реЗрдб # 2" os_prio = 2 tid = 0x00000250c35ba800 nid = 0x43f8 рд░рди рдХрд░рдиреЗ рдпреЛрдЧреНрдп
"GC рдереНрд░реЗрдб # 3" os_prio = 2 tid = 0x00000250c35c0800 nid = 0x20c0 runnable
"G1 рдореЗрди рдорд╛рд░реНрдХрд░" os_prio = 2 tid = 0x00000250c3633000 nid = 0x4068nnable
"G1 Conc # 0" os_prio = 2 tid = 0x00000250c3636000 nid = 0x3e28 рд░рди рдХрд░рдиреЗ рдпреЛрдЧреНрдп
"G1 рдкрд░рд┐рд╖реНрдХреГрдд # 0" os_prio = 2 tid = 0x00000250c367e000 nid = 0x3c0c runnable
"G1 рд░рд┐рдлрд╛рдЗрди # 1" os_prio = 2 tid = 0x00000250e47fb800 nid = 0x3890 runnable
"G1 рдкрд░рд┐рд╖реНрдХреГрдд # 2" os_prio = 2 tid = 0x00000250e47fc000 nid = 0x32a8 runnable
"G1 рд░рд┐рдлрд╛рдЗрди # 3" os_prio = 2 tid = 0x00000250e47fd800 nid = 0x3d00 runnable
"G1 рдпрдВрдЧ рд░реЗрдорд╕реЗрдЯ рд╕реИрдореНрдкрд▓рд┐рдВрдЧ" os_prio = 2 tid = 0x00000250e4800800 nid = 0xef4 runnable
"VM рдЖрд╡рдзрд┐рдХ рдХрд╛рд░реНрдп рд╕реВрддреНрд░" os_prio = 2 tid = 0x00000250e54d6800 nid = 0x3468 рд╕реНрдерд┐рддрд┐ рдкрд░ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣рд╛ рд╣реИ
рдЬреЗрдПрдирдЖрдИ рд╡реИрд╢реНрд╡рд┐рдХ рд╕рдВрджрд░реНрдн: 2
рдорд┐рд▓рд╛ рдПрдХ рдЬрд╛рд╡рд╛-рд╕реНрддрд░реАрдп рдЧрддрд┐рд░реЛрдз:
=============================
"рдереНрд░реЗрдб-0":
рдореЙрдирд┐рдЯрд░ 0x00000250e4982480 (рдСрдмреНрдЬреЗрдХреНрдЯ 0x00000000894465b0, рдПрдХ java.lang.Object) рдХреЛ рд▓реЙрдХ рдХрд░рдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣рд╛ рд╣реИ,
рдЬреЛ "рдереНрд░реЗрдб -1" рджреНрд╡рд╛рд░рд╛ рдЖрдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
"рдереНрд░реЗрдб -1":
рдореЙрдирд┐рдЯрд░ 0x00000250e4982380 (рдСрдмреНрдЬреЗрдХреНрдЯ 0x00000000894465a0, рдПрдХ java.lang.Object) рдХреЛ рд▓реЙрдХ рдХрд░рдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣рд╛ рд╣реИ,
рдЬреЛ "рдереНрд░реЗрдб -0" рджреНрд╡рд╛рд░рд╛ рдЖрдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
рдКрдкрд░ рд╕реВрдЪреАрдмрджреНрдз рдереНрд░реЗрдбреНрд╕ рдХреЗ рд▓рд┐рдП рдЬрд╛рд╡рд╛ рд╕реНрдЯреИрдХ рдЬрд╛рдирдХрд╛рд░реА:
================================================== =
"рдереНрд░реЗрдб-0":
рдбреЗрдбрд▓реЙрдХрдкреНрд░реЛрдЧреНрд░рд╛рдо $ рдбреЗрдбрд▓реЙрдХрд░реЗрдВрдмрд▓.рд░реБрдг (рдбреЗрдбрд▓реЙрдХрдкреНрд░реЛрдЧреНрд░рд╛рдо.рдЬрд╛рд╡рд╛:34)
- рд▓реЙрдХ рдХрд░рдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣рд╛ рд╣реИ <0x00000000894465b0> (java.lang.Object)
- рд▓реЙрдХ <0x00000000894465a0> (рдПрдХ java.lang.Object)
java.lang.Thread.run (java.base@10.0.1/Thread.java: 8/8) рдкрд░
"рдереНрд░реЗрдб -1":
рдбреЗрдбрд▓реЙрдХрдкреНрд░реЛрдЧреНрд░рд╛рдо $ рдбреЗрдбрд▓реЙрдХрд░реЗрдВрдмрд▓.рд░реБрдг (рдбреЗрдбрд▓реЙрдХрдкреНрд░реЛрдЧреНрд░рд╛рдо.рдЬрд╛рд╡рд╛:34)
- рд▓реЙрдХ рдХрд░рдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣рд╛ рд╣реИ <0x00000000894465a0> (java.lang.Object)
- рд▓реЙрдХ <0x00000000894465b0> (рдПрдХ java.lang.Object)
java.lang.Thread.run (java.base@10.0.1/Thread.java: 8/8) рдкрд░
1 рдЧрддрд┐рд░реЛрдз рдорд┐рд▓рд╛ред
рдкрд░рд┐рдЪрдпрд╛рддреНрдордХ рдЬрд╛рдирдХрд╛рд░реА
рд╣рд╛рд▓рд╛рдБрдХрд┐ рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ рдпрд╣ рдлрд╝рд╛рдЗрд▓ рдмрд╣реБрдд рдЬрдЯрд┐рд▓ рдФрд░ рднреНрд░рд╛рдордХ рд▓рдЧ рд╕рдХрддреА рд╣реИ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ рдЕрдЧрд░ рдЖрдк рдЗрд╕реЗ рдЪрд░рдг рджрд░ рдЪрд░рдг рдЕрд▓рдЧ рдХрд░рддреЗ рд╣реИрдВред
рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рдЙрд╕ рд╕рдордп рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддреА рд╣реИ рдЬрдм рдбрдВрдк рдХрд╛ рдЧрдарди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рджреВрд╕рд░рд╛ - рдЬреЗрд╡реАрдПрдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдиреИрджрд╛рдирд┐рдХ тАЛтАЛрдЬрд╛рдирдХрд╛рд░реА, рдЬрд┐рд╕ рдкрд░ рдбрдВрдк рдкреНрд░рд╛рдкреНрдд рд╣реБрдЖ рдерд╛:
2018-06-19 16:44:44 Full thread dump Java HotSpot(TM) 64-Bit Server VM (10.0.1+10 mixed mode):
рдЗрд╕ рдЦрдВрдб рдореЗрдВ рдХреЛрдИ рдкреНрд░рд╡рд╛рд╣ рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рд╣реИред рдпрд╣рд╛рдВ рдЙрд╕ рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рд╕рд╛рдорд╛рдиреНрдп рд╕рдВрджрд░реНрдн рдЬрд┐рд╕рдореЗрдВ рдбрдВрдк рдПрдХрддреНрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рд╡рд╛рд╣ рд╕реВрдЪрдирд╛
рдирд┐рдореНрди рдЕрдиреБрднрд╛рдЧ рдЙрди рдереНрд░реЗрдбреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдбрдВрдк рд╕рдВрдЧреНрд░рд╣ рдХреЗ рд╕рдордп рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдЪрд▓ рд░рд╣реЗ рдереЗ:
рдзрд╛рдЧреЗ рд╡рд░реНрдЧ SMR рдЬрд╛рдирдХрд╛рд░реА:
_java_thread_list = 0x00000250e5488a00, рд▓рдВрдмрд╛рдИ = 13, рддрддреНрд╡ = {
0x00000250e4979000, 0x00000250e4982800, 0x00000250e52f2800, 0x00000250e4992800
0x00000250e4995800, 0x00000250e49a5800, 0x00000250e49ae800, 0x00000250e5324000,
0x00000250e54cd800, 0x00000250e54cf000, 0x00000250e54d1800, 0x00000250e54d2000
0x00000250e54d0800
}
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЕрдиреБрднрд╛рдЧ рд╕реВрдЪреА:
рд╕реБрд░рдХреНрд╖рд┐рдд рдореЗрдореЛрд░реА рд░рд┐рдХреНрд▓реЗрдореЗрд╢рди (SMR) рдЬрд╛рдирдХрд╛рд░реАрдЗрд╕рдореЗрдВ JVM рдХреЗ рдмрд╛рд╣рд░ рдереНрд░реЗрдбреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╣реИ, рдЕрд░реНрдерд╛рдд рдпреЗ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдереНрд░реЗрдб рдпрд╛ рдХрдЪрд░рд╛ рд╕рдВрдЧреНрд░рд╣ рдзрд╛рдЧреЗ рдирд╣реАрдВ рд╣реИрдВред рдпрджрд┐ рдЖрдк рдЗрди рдереНрд░реЗрдбреНрд╕ рдХреЗ рдкрддреЗ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рд╡реЗ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ
tid - "рдкреНрд░рд╛рдХреГрддрд┐рдХ, рд▓реЛрд╣рд╛" (рджреЗрд╢реА) рдкрддреЗ рдХреЗ рдореВрд▓реНрдп рдХреЗ рдЕрдиреБрд░реВрдк рд╣реИрдВ, рди рдХрд┐ рдереНрд░реЗрдб рдЖрдИрдбреА рдХреЗред
рдирд┐рд░рд░реНрдердХ рд╕реВрдЪрдирд╛рдУрдВ рдХреЛ рдЫрд┐рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрд▓рд┐рдкреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
"рд╕рдВрджрд░реНрдн рд╣реИрдВрдбрд▓рд░" # 2 ... tid = 0x00000250e4979000 ...
"рдлрд╛рдЗрдирд▓" # 3 ... tid = 0x00000250e4982800 ...
"рд╕рд┐рдЧреНрдирд▓ рдбрд┐рд╕реНрдкреИрдЪрд░" # 4 ... tid = 0x00000250e52f2800 ...
"рдЕрдЯреИрдЪ рд╢реНрд░реЛрддрд╛" # 5 ... tid = 0x00000250e4992800 ...
"C2 CompilerThread0" # 6 ... tid = 0x00000250e4995800 ...
"C2 CompilerThread1" # 7 ... tid = 0x00000250e49a5800 ...
"C1 CompilerThread2" # 8 ... tid = 0x00000250e49ae800 ...
"рд╕реНрд╡реАрдкрд░ рдзрд╛рдЧрд╛" # 9 ... tid = 0x00000250e5324000 ...
"рд╕рд░реНрд╡рд┐рд╕ рдереНрд░реЗрдб" # 10 ... tid = 0x00000250e54cd800 ...
"рдХреЙрдорди-рдХреНрд▓реАрдирд░" # 11 ... tid = 0x00000250e54cf000 ...
"рдереНрд░реЗрдб-0" # 12 ... tid = 0x00000250e54d1800 ...
"рдереНрд░реЗрдб -1" # 13 ... tid = 0x00000250e54d2000 ...
"рд╡рд┐рдзреНрд╡рдВрд╕ рдЬрд╛рд╡рд╛" # 14 ... tid = 0x00000250e54d0800 ...
рдзрд╛рд░рд╛рдУрдВ
рдПрд╕рдПрдордЖрд░ рдмреНрд▓реЙрдХ рдХреЗ рдареАрдХ рдмрд╛рдж рдереНрд░реЗрдбреНрд╕ рдХреА рдПрдХ рд╕реВрдЪреА рд╣реИред рд╣рдорд╛рд░реА рд╕реВрдЪреА рдХрд╛ рдкрд╣рд▓рд╛ рд╕реВрддреНрд░ рд╕рдВрджрд░реНрдн рд╣реИрдВрдбрд▓рд░ рд╣реИ:
"рд╕рдВрджрд░реНрдн рд╣реИрдВрдбрд▓рд░" # 2 рдбреЗрдорди рдкреНрд░рд┐рдпреЛ = 10 os_prio = 2 tid = 0x00000250e4979000 nid = 0x3c28 рд╢рд░реНрдд рдкрд░ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣рд╛ рд╣реИ [0x000000b82a9ff000]
java.lang.Thread.State: RUNNABLE
java.lang.ref.eference.waitForReferencePendingList (java.base@10.0.1/ рдореВрд▓ рд╡рд┐рдзрд┐) рдкрд░
java.lang.ref.eference.processPendingReferences (java.base@10.0.1/Reference.java: 174) рдкрд░
java.lang.ref.eference.access рдкрд░ $ 000 (java.base@10.0.1/Reference.java: 44)
java.lang.ref.eference $ ReferenceHandler.run (java.base@10.0.1/Reference.java: 138) рдкрд░
рд▓реЙрдХ рдХрд┐рдП рдЧрдП рд╕реНрд╡рдпрдВ рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝рд░:
- рдХреЛрдИ рдирд╣реАрдВ
рдзрд╛рд░рд╛ рдХрд╛ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╡рд┐рд╡рд░рдг
рдкреНрд░рддреНрдпреЗрдХ рдереНрд░реЗрдб рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рд╡рд░рдг рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИред рд╡рд┐рд╡рд░рдг рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЖрдЗрдЯрдо рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:
рдЕрдиреБрднрд╛рдЧ | рдЙрджрд╛рд╣рд░рдг | рд╡рд┐рд╡рд░рдг |
---|
рдирд╛рдо | "рд╕рдВрджрд░реНрдн рд╣реИрдВрдбрд▓рд░" | рдорд╛рдирд╡ рдкрдардиреАрдп рдзрд╛рд░рд╛ рдирд╛рдоред рдереНрд░реЗрдб рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╕реЗрдЯрдирд╛рдо рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ рдирд╛рдо рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдФрд░ getName рдкрд░ рдХреЙрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ |
рдЖрдИрдбреА | # реи | рдереНрд░реЗрдб рд╡рд░реНрдЧ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рдЖрдИрдбреАред рдЖрдИрдбреА рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдереНрд░реЗрдбреНрд╕ рдХреЗ рд▓рд┐рдП рдЬрдирд░реЗрдЯ рдХреА рдЬрд╛рддреА рд╣реИред рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдорд╛рди рд╣реИ 1. рдкреНрд░рддреНрдпреЗрдХ рдирд╡ рдирд┐рд░реНрдорд┐рдд рдереНрд░реЗрдб рдХреЛ рдЕрдкрдиреА рдЖрдИрдбреА рдЕрд╕рд╛рдЗрди рдХреА рдЧрдИ рд╣реИ, рдкрд╣рд▓реЗ рд╕реЗ 1. рдмрдврд╝реА рд╣реБрдИ рд╣реИред рдереНрд░реЗрдб рдХреНрд▓рд╛рд╕ рдХреА рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ getId рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдпрд╣ рдХреЗрд╡рд▓-рдкрдарди рдереНрд░реЗрдб рдЧреБрдг рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред |
рдбреЗрдореЙрди рдХреА рд╕реНрдерд┐рддрд┐ | рдбреЗрдореЙрди | рдЭрдВрдбрд╛ рдПрдХ рд╕рдВрдХреЗрдд рд╣реИ рдХрд┐ рдзрд╛рдЧрд╛ рдПрдХ рджрд╛рдирд╡ рд╣реИред рдпрджрд┐ рдпрд╣ рдПрдХ рджрд╛рдирд╡ рд╣реИ, рддреЛ рдЭрдВрдбрд╛ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдзрд╛рдЧрд╛ -0 рдПрдХ рдбреЗрдореЙрди рдирд╣реАрдВ рд╣реИред |
рдкреНрд░рд╛рдердорд┐рдХрддрд╛ | prio = 10 | рдЬрд╛рд╡рд╛ рд╕реНрдЯреНрд░реАрдо рдХреА рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрд╣ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдЖрд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рд╕рдВрдмрдВрдзрд┐рдд рдереНрд░реЗрдб рдХреА рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдХреЗ рдЕрдиреБрд░реВрдк рдирд╣реАрдВ рд╣реИред рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рддрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХреНрд▓рд╛рд╕ рдереНрд░реЗрдб рдХреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рд╕реЗрдЯрдкреИрд░рд┐рдЯреА рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдФрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП getPriority рд╡рд┐рдзрд┐ред |
рдУрдПрд╕ рдереНрд░реЗрдб рдкреНрд░рд╛рдердорд┐рдХрддрд╛ | рдУрд╕_рдкреНрд░рд┐рдпреЛ = 2 | рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдзрд╛рдЧрд╛ред рдпрд╣ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдЙрд╕ рд▓рд┐рдВрдХ рдХрд┐рдП рдЧрдП рдЬрд╛рд╡рд╛ рдереНрд░реЗрдб рд╕реЗ рднрд┐рдиреНрди рд╣реЛ рд╕рдХрддреА рд╣реИред |
рдкрддрд╛ | tid = 0x00000250e4979000 | рдЬрд╛рд╡рд╛ рд╕реНрдЯреНрд░реАрдо рдХрд╛ рдкрддрд╛ред рдпрд╣ рдкрддрд╛ рдЬрд╛рд╡рд╛ рдореВрд▓ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ (JNI) рдереНрд░реЗрдб рдХреНрд▓рд╛рд╕ рдХрд╛ рдореВрд▓ рдСрдмреНрдЬреЗрдХреНрдЯ (рдПрдХ C ++ рдереНрд░реЗрдб рдСрдмреНрдЬреЗрдХреНрдЯ рдЬреЛ JNI рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рд╡рд╛ рдереНрд░реЗрдб рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реИ ) рдХрд╛ рдПрдХ рд╕рдВрдХреЗрддрдХ рд╣реИред рдпрд╣ рдорд╛рди рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд╡рд╛рдЗрдВрдЯрд░ рдХрд╛рд╕реНрдЯрд┐рдВрдЧ рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (C ++ рдСрдмреНрдЬреЗрдХреНрдЯ рдЬреЛ рдЗрд╕ рдЬрд╛рд╡рд╛ рдереНрд░реЗрдб рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реИ) рдкреВрд░реНрдгрд╛рдВрдХ рдХреЗ рд▓рд┐рдПред рджреЗрдЦреЗрдВред рд╣реЙрдЯрд╕реНрдкреЙрдЯ / рд╢реЗрдпрд░ / рд░рдирдЯрд╛рдЗрдо / рдереНрд░реЗрдб.рд╕реАрдкреАрд╕реА рдореЗрдВ 879 рд▓рд╛рдЗрди :
st-> рдкреНрд░рд┐рдВрдЯ ("tid =" INTPTR_FORMAT "", P2i (рдпрд╣));
рд╣рд╛рд▓рд╛рдБрдХрд┐ рдЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рдХреБрдВрдЬреА ( tid ) рд╕реНрдЯреНрд░реАрдо рдЖрдИрдбреА рдХреА рддрд░рд╣ рджрд┐рдЦ рд╕рдХрддреА рд╣реИ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ JNI C ++ рдереНрд░реЗрдб рдХрдиреЗрдХреНрдЯреЗрдб рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдкрддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдорд╛рди рдирд╣реАрдВ рд╣реИ рдЬрд╛рд╡рд╛ рдереНрд░реЗрдб рдХреА getId рд╡рд┐рдзрд┐ рд▓реМрдЯрд╛рддрд╛ рд╣реИред |
OS рдереНрд░реЗрдб рдЖрдИрдбреА | nid = 0x3c28 | рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдереНрд░реЗрдб рдХреА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдЬрд┐рд╕рдореЗрдВ рдЬрд╛рд╡рд╛ рдереНрд░реЗрдб рдмрд╛рдзреНрдп рд╣реИред рдпрд╣ рдорд╛рди рдирд┐рдореНрди рдХреЛрдб рдХреЗ рд╕рд╛рде рдЖрдЙрдЯрдкреБрдЯ рд╣реИ: рд╣реЙрдЯрд╕реНрдкреЙрдЯ / рд╢реЗрдпрд░ / рд░рдирдЯрд╛рдЗрдо / osThread.cpp рдореЗрдВ рд▓рд╛рдЗрди 42 :
st-> рдкреНрд░рд┐рдВрдЯ ("nid = 0x% x", рдереНрд░реЗрдб_рдЖрдИрдбреА ());
|
рд╕реНрдерд┐рддрд┐ | рд╢рд░реНрдд рдкрд░ рдЗрдВрддрдЬрд╛рд░ рдХрд░рдирд╛ | рд╡рд░реНрддрдорд╛рди рдзрд╛рдЧреЗ рдХреА рдорд╛рдирд╡ рдкрдардиреАрдп рд╕реНрдерд┐рддрд┐ред рдпрд╣ рд░реЗрдЦрд╛ рдзрд╛рд░рд╛ рдХреА рд╕рд░рд▓ рд╕реНрдерд┐рддрд┐ (рдиреАрдЪреЗ рджреЗрдЦреЗрдВ) рдкрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреА рд╣реИ, рдЬреЛ рд╣реЛ рд╕рдХрддреА рд╣реИ рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдзрд╛рдЧрд╛ рдХреНрдпрд╛ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рдерд╛ (рдЕрд░реНрдерд╛рдд рдХреНрдпрд╛ рдзрд╛рдЧрд╛ рд▓реЙрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рдерд╛ рдпрд╛ рдЕрдирд▓реЙрдХ рд╕реНрдерд┐рддрд┐ рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣рд╛ рд╣реИ)ред |
рдЕрдВрддрд┐рдо рдЬреНрдЮрд╛рдд рдЬрд╛рд╡рд╛ рд╕реНрдЯреИрдХ рд╕реВрдЪрдХ | [0x000000b82a9ff000] | рдЗрд╕ рд╕реНрдЯреНрд░реАрдо рд╕реЗ рдЬреБрдбрд╝реЗ рдЕрдВрддрд┐рдо рдЬреНрдЮрд╛рдд рд╕реНрдЯреИрдХ рдкреЙрдЗрдВрдЯрд░ (SP)ред рдпрд╣ рдорд╛рди JNI рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЬрд╛рд╡рд╛ рдХреЛрдб рдХреЗ рд╕рд╛рде рдорд┐рд╢реНрд░рд┐рдд рджреЗрд╢реА C ++ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдорд╛рди рдкрд┐рдЫрд▓реЗ last_Java_sp () рджреНрд╡рд╛рд░рд╛ рд▓реМрдЯрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╣реЙрдЯрд╕реНрдкреЙрдЯ / рд╢реЗрдпрд░ / рд░рдирдЯрд╛рдЗрдо / рдереНрд░реЗрдб.рдХреИрдк рдореЗрдВ 2886 рд▓рд╛рдЗрди :
st-> Print_cr ("[" INTPTR_FORMAT "]",
(intptr_t) last_Java_sp () & ~ right_n_bits (12));
рд╕рд╛рдзрд╛рд░рдг рдереНрд░реЗрдб рдбрдВрдк рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЬрд╛рдирдХрд╛рд░реА рд▓рдЧрднрдЧ рдмреЗрдХрд╛рд░ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЬрдЯрд┐рд▓ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдПрд╕рдкреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рддрд╛рд▓реЗ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред |
рд╕реНрдЯреНрд░реАрдо рд╕реНрдерд┐рддрд┐
рджреВрд╕рд░реА рдкрдВрдХреНрддрд┐ рдзрд╛рд░рд╛ рдХреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рд╣реИред рд╕рдВрднрд╛рд╡рд┐рдд рд╕реНрдЯреНрд░реАрдо рд╕реНрдЯреЗрдЯреНрд╕ enum рдореЗрдВ рд╕реВрдЪреАрдмрджреНрдз рд╣реИрдВ:
рдзрд╛рдЧрд╛ :
рдирдИ
runnable
рдЕрд╡рд░реЛрдзрд┐рдд
рдкреНрд░рддреАрдХреНрд╖рд╛
TIMED_WAITING
рд╕рдорд╛рдкреНрдд
рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг рдХреЗ
рд▓рд┐рдП рдкреНрд░рд▓реЗрдЦрди рджреЗрдЦреЗрдВред
рдереНрд░реЗрдб рд╕реНрдЯреИрдХ рдЯреНрд░реЗрд╕
рдЬрд┐рд╕ рд╕рдордп рдбрдВрдк рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдЙрд╕ рд╕рдордп рдЕрдЧрд▓реЗ рднрд╛рдЧ рдореЗрдВ рд╕реНрдЯреНрд░реАрдо рдХрд╛ рд╕реНрдЯреИрдХ рдЯреНрд░реЗрд╕ рд╣реЛрддрд╛ рд╣реИред рдпрд╣ рд╕реНрдЯреИрдХ рдЯреНрд░реЗрд╕ рдПрдХ рд╕реНрдЯреИрдХ рдЯреНрд░реЗрд╕ рдХреЗ рд╕рдорд╛рди рд╣реИ, рдЬрд┐рд╕реЗ рдПрдХ рдЕрдирдХрд╣рд╛ рдЕрдкрд╡рд╛рдж рджреНрд╡рд╛рд░рд╛ рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдФрд░ рдЗрд╕рдореЗрдВ рдЙрди рд╡рд░реНрдЧреЛрдВ рдФрд░ рддрд╛рд░реЛрдВ рдХреЗ рдирд╛рдо рд╢рд╛рдорд┐рд▓ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЙрд╕ рд╕рдордп рдбрдВрдк рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд╕рдВрджрд░реНрдн рд╣реИрдВрдбрд▓рд░ рд╕реНрдЯреНрд░реАрдо рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо рдХреБрдЫ рднреА рджрд┐рд▓рдЪрд╕реНрдк рдирд╣реАрдВ рджреЗрдЦрддреЗ рд╣реИрдВред
рд╣рд╛рд▓рд╛рдБрдХрд┐, рдереНрд░реЗрдб -02 рдереНрд░реЗрдб рдЯреНрд░реЗрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ рдЬреЛ рдорд╛рдирдХ рдЯреНрд░реЗрд╕ рд╕реЗ рдЕрд▓рдЧ рд╣реИ:
"рдереНрд░реЗрдб -реж" # резреи рдмреЗрд╢реБрдорд╛рд░ = рел рдУрд╕реН_рдкреНрд░рд┐рдпреЛ = реж рдЯреАрдЖрдИрдбреА тАЛтАЛ= реж рдХреНрд╕рдкреЗрд░рд┐рдЯ реирелрежdрел18рез 0режреж рдПрдирдЖрдИрдбреА = режxdec рдореЙрдирд┐рдЯрд░ рдПрдВрдЯреНрд░реА рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣рд╛ рд╣реИ [режxрежрежрежрежрежреж рдмреА bреи рдмреА рекрежрежреж]
java.lang.Thread.State: BLOCKED (рдСрдмреНрдЬреЗрдХреНрдЯ рдореЙрдиреАрдЯрд░ рдкрд░)
рдбреЗрдбрд▓реЙрдХрдкреНрд░реЛрдЧреНрд░рд╛рдо $ рдбреЗрдбрд▓реЙрдХрд░реЗрдВрдмрд▓.рд░реБрдг (рдбреЗрдбрд▓реЙрдХрдкреНрд░реЛрдЧреНрд░рд╛рдо.рдЬрд╛рд╡рд╛:34)
- рд▓реЙрдХ рдХрд░рдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣рд╛ рд╣реИ <0x00000000894465b0> (java.lang.Object)
- рд▓реЙрдХ <0x00000000894465a0> (рдПрдХ java.lang.Object)
java.lang.Thread.run (java.base@10.0.1/Thread.java: 8/8) рдкрд░
рд▓реЙрдХ рдХрд┐рдП рдЧрдП рд╕реНрд╡рдпрдВ рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝рд░:
- рдХреЛрдИ рдирд╣реАрдВ
рдЯреНрд░реЗрд╕ рдореЗрдВ, рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рд▓реЙрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдЬреЛрдбрд╝реА рдЧрдИ рд╣реИред рдпрд╣ рдзрд╛рдЧрд╛ рдкрддрд╛ 0x00000000894465b0 (рдСрдмреНрдЬреЗрдХреНрдЯ рдкреНрд░рдХрд╛рд░ java.lang.Object) рдХреЗ рд╕рд╛рде рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд░ рд▓реЙрдХ рдХреА рдЙрдореНрдореАрдж рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдзрд╛рдЧрд╛ рд╕реНрд╡рдпрдВ рдХреЛ 0x00000000894465a0 (рдПрдХ java.lang.Object) рдкрддреЗ рдХреЗ рд╕рд╛рде рд▓реЙрдХ рд░рдЦрддрд╛ рд╣реИред рдЧрддрд┐рд░реЛрдз рдХреЗ рдирд┐рджрд╛рди рдХреЗ рд▓рд┐рдП рдпрд╣ рдЬрд╛рдирдХрд╛рд░реА рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧреАред
рдХрдмреНрдЬрд╛ рдХрд░ рд▓рд┐рдпрд╛ рддреБрд▓реНрдпрдХрд╛рд▓рди рдЖрджрд┐рдо
рдЕрдВрддрд┐рдо рдЕрдиреБрднрд╛рдЧ рд╕реНрдЯреНрд░реАрдо рджреНрд╡рд╛рд░рд╛ рдХреИрдкреНрдЪрд░ рдХрд┐рдП рдЧрдП рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝реЗрд╢рди рдкреНрд░рд╛рдЗрдореЗрдЯрд┐рд╡реНрд╕ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рддрд╛ рд╣реИред рдпреЗ рдРрд╕реА рд╡рд╕реНрддреБрдПрдБ рд╣реИрдВ рдЬрд┐рдирдХрд╛ рдЙрдкрдпреЛрдЧ рдереНрд░реЗрдбреНрд╕ рдХреЛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рддрд╛рд▓реЗред
рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдЬрд╛рд╡рд╛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХреЗ рдЕрдиреБрд╕рд╛рд░,
рдУрдиреЗрдмрд▓ рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝рд░ AbstractOwnableSynchronizer (рдпрд╛ рдЗрд╕рдХреЗ рдЙрдкрд╡рд░реНрдЧ) рдХреЗ рд╡рдВрд╢рдЬ рд╣реИрдВ, рдЬрд┐рдиреНрд╣реЗрдВ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝реЗрд╢рди рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реНрдЯреНрд░реАрдо рджреНрд╡рд╛рд░рд╛ рдХреИрдкреНрдЪрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
ReentrantLock рдФрд░
рд░рд╛рдЗрдЯ-рд▓реЙрдХ , рд▓реЗрдХрд┐рди ReentrantReadWriteLock рдХреНрд▓рд╛рд╕ рдХрд╛
рд░реАрдб-рд▓реЙрдХ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рджреНрд╡рд╛рд░рд╛ рдкреЗрд╢ рдХрд┐рдП рдЧрдП рдРрд╕реЗ "рд╕реНрд╡рдпрдВ рддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ" рдХреЗ рджреЛ рдЕрдЪреНрдЫреЗ рдЙрджрд╛рд╣рд░рдг рдирд╣реАрдВ рд╣реИрдВред
рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП, рдЖрдк рдЗрд╕рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
рдкреЛрд╕реНрдЯ ред
рдЬреЗрд╡реАрдПрдо рдзрд╛рдЧреЗ
рдбрдВрдк рдХреЗ рдЕрдЧрд▓реЗ рднрд╛рдЧ рдореЗрдВ рдЬреЗрд╡реАрдПрдо рддрдХрдиреАрдХреА рдереНрд░реЗрдбреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╣реИ рдЬреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдирд╣реАрдВ рд╣реИрдВ рдФрд░ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдереНрд░реЗрдбреНрд╕ рд╕реЗ рдЬреБрдбрд╝реЗ рд╣реИрдВред рдХреНрдпреЛрдВрдХрд┐ рдпреЗ рдзрд╛рд░рд╛рдПрдБ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рдмрд╛рд╣рд░ рдХрд╛рдо рдХрд░рддреА рд╣реИрдВ, рдЗрдирдореЗрдВ рд╕реНрдЯреНрд░реАрдо рдЖрдЗрдбреЗрдВрдЯрд┐рдлрд╝рд╛рдпрд░ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░, рдпреЗ рдХрдЪрд░рд╛ рдХрд▓реЗрдХреНрдЯрд░ рдзрд╛рдЧреЗ рдФрд░ рдЕрдиреНрдп рддрдХрдиреАрдХреА рдЬреЗрд╡реАрдПрдо рдзрд╛рдЧреЗ рд╣реИрдВ:
"VM рдереНрд░реЗрдб" os_prio = 2 tid = 0x00000250e496d800 nid = 0x1920 рд░рди рдХрд░рдиреЗ рдпреЛрдЧреНрдп
"GC рдереНрд░реЗрдб # 0" os_prio = 2 tid = 0x00000250c35b5800 nid = 0x310c runnable
"GC рдереНрд░реЗрдб # 1" os_prio = 2 tid = 0x00000250c35b8000 nid = 0x12b4 runnable
"GC рдереНрд░реЗрдб # 2" os_prio = 2 tid = 0x00000250c35ba800 nid = 0x43f8 рд░рди рдХрд░рдиреЗ рдпреЛрдЧреНрдп
"GC рдереНрд░реЗрдб # 3" os_prio = 2 tid = 0x00000250c35c0800 nid = 0x20c0 runnable
"G1 рдореЗрди рдорд╛рд░реНрдХрд░" os_prio = 2 tid = 0x00000250c3633000 nid = 0x4068nnable
"G1 Conc # 0" os_prio = 2 tid = 0x00000250c3636000 nid = 0x3e28 рд░рди рдХрд░рдиреЗ рдпреЛрдЧреНрдп
"G1 рдкрд░рд┐рд╖реНрдХреГрдд # 0" os_prio = 2 tid = 0x00000250c367e000 nid = 0x3c0c runnable
"G1 рд░рд┐рдлрд╛рдЗрди # 1" os_prio = 2 tid = 0x00000250e47fb800 nid = 0x3890 runnable
"G1 рдкрд░рд┐рд╖реНрдХреГрдд # 2" os_prio = 2 tid = 0x00000250e47fc000 nid = 0x32a8 runnable
"G1 рд░рд┐рдлрд╛рдЗрди # 3" os_prio = 2 tid = 0x00000250e47fd800 nid = 0x3d00 runnable
"G1 рдпрдВрдЧ рд░реЗрдорд╕реЗрдЯ рд╕реИрдореНрдкрд▓рд┐рдВрдЧ" os_prio = 2 tid = 0x00000250e4800800 nid = 0xef4 runnable
"VM рдЖрд╡рдзрд┐рдХ рдХрд╛рд░реНрдп рд╕реВрддреНрд░" os_prio = 2 tid = 0x00000250e54d6800 nid = 0x3468 рд╕реНрдерд┐рддрд┐ рдкрд░ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣рд╛ рд╣реИ
рдЬреЗрдПрдирдЖрдИ рдЧреНрд▓реЛрдмрд▓ рд▓рд┐рдВрдХ
рдпрд╣ рдЦрдВрдб рдЬреЗрдПрдирдЖрдИ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬреЗрдПрдирдПрдо рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╡реИрд╢реНрд╡рд┐рдХ рд╕рдВрджрд░реНрднреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред рдпреЗ рд▓рд┐рдВрдХ рдХрдЪрд░рд╛ рд╕рдВрдЧреНрд░рд╛рд╣рдХ рджреНрд╡рд╛рд░рд╛ рдирд╣реАрдВ рдкрд░реЛрд╕реЗ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдХреБрдЫ рд╡рд┐рд╢реЗрд╖ рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рд╕реНрдореГрддрд┐ рд░рд┐рд╕рд╛рд╡ рдХрд╛ рдХрд╛рд░рдг рдмрди рд╕рдХрддреЗ рд╣реИрдВред
рдЬреЗрдПрдирдЖрдИ рд╡реИрд╢реНрд╡рд┐рдХ рд╕рдВрджрд░реНрдн: 2
рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕рд░рд▓ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдЗрд╕ рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╡реИрд╢реНрд╡рд┐рдХ рд╕рдВрджрд░реНрднреЛрдВ рдХреЗ рдорд╣рддреНрд╡ рдХреЛ рд╕рдордЭрдирд╛ рд╣реЛрдЧрд╛ред рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ
рд▓рд┐рдП рдЗрд╕
рдкреЛрд╕реНрдЯ рдХреЛ рджреЗрдЦреЗрдВред
рдбреЗрдбрд▓реЙрдХ рдереНрд░реЗрдбреНрд╕
рдЕрдВрддрд┐рдо рдЦрдВрдб рдореЗрдВ рдкрд╛рдП рдЧрдП рдЧрддрд┐рд░реЛрдзреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╣реИред
рдпрджрд┐ рдпреЗ рдирд╣реАрдВ рдорд┐рд▓рддреЗ рд╣реИрдВ, рддреЛ рдЕрдиреБрднрд╛рдЧ рдЦрд╛рд▓реА рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдХреНрдпреЛрдВрдХрд┐ рд╣рдордиреЗ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рддрд╛рд▓реЗ рдХреЗ рд╕рд╛рде рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рд╣реИ, рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рдЦрдВрдб рд╣реИред рдбрдВрдкрд┐рдВрдЧ рдХреЗ рджреМрд░рд╛рди рдПрдХ рд▓реЙрдХ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдЗрд╕реЗ рдирд┐рдореНрди рд╕рдВрджреЗрд╢ рдХреЗ рд╕рд╛рде рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
рдорд┐рд▓рд╛ рдПрдХ рдЬрд╛рд╡рд╛-рд╕реНрддрд░реАрдп рдЧрддрд┐рд░реЛрдз:
=============================
"рдереНрд░реЗрдб-0":
рдореЙрдирд┐рдЯрд░ 0x00000250e4982480 (рдСрдмреНрдЬреЗрдХреНрдЯ 0x00000000894465b0, рдПрдХ java.lang.Object) рдХреЛ рд▓реЙрдХ рдХрд░рдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣рд╛ рд╣реИ,
рдЬреЛ "рдереНрд░реЗрдб -1" рджреНрд╡рд╛рд░рд╛ рдЖрдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
"рдереНрд░реЗрдб -1":
рдореЙрдирд┐рдЯрд░ 0x00000250e4982380 (рдСрдмреНрдЬреЗрдХреНрдЯ 0x00000000894465a0, рдПрдХ java.lang.Object) рдХреЛ рд▓реЙрдХ рдХрд░рдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣рд╛ рд╣реИ,
рдЬреЛ "рдереНрд░реЗрдб -0" рджреНрд╡рд╛рд░рд╛ рдЖрдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
рдКрдкрд░ рд╕реВрдЪреАрдмрджреНрдз рдереНрд░реЗрдбреНрд╕ рдХреЗ рд▓рд┐рдП рдЬрд╛рд╡рд╛ рд╕реНрдЯреИрдХ рдЬрд╛рдирдХрд╛рд░реА:
================================================== =
"рдереНрд░реЗрдб-0":
рдбреЗрдбрд▓реЙрдХрдкреНрд░реЛрдЧреНрд░рд╛рдо $ рдбреЗрдбрд▓реЙрдХрд░реЗрдВрдмрд▓.рд░реБрдг (рдбреЗрдбрд▓реЙрдХрдкреНрд░реЛрдЧреНрд░рд╛рдо.рдЬрд╛рд╡рд╛:34)
- рд▓реЙрдХ рдХрд░рдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣рд╛ рд╣реИ <0x00000000894465b0> (java.lang.Object)
- рд▓реЙрдХ <0x00000000894465a0> (рдПрдХ java.lang.Object)
java.lang.Thread.run (java.base@10.0.1/Thread.java: 8/8) рдкрд░
"рдереНрд░реЗрдб -1":
рдбреЗрдбрд▓реЙрдХрдкреНрд░реЛрдЧреНрд░рд╛рдо $ рдбреЗрдбрд▓реЙрдХрд░реЗрдВрдмрд▓.рд░реБрдг (рдбреЗрдбрд▓реЙрдХрдкреНрд░реЛрдЧреНрд░рд╛рдо.рдЬрд╛рд╡рд╛:34)
- рд▓реЙрдХ рдХрд░рдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣рд╛ рд╣реИ <0x00000000894465a0> (java.lang.Object)
- рд▓реЙрдХ <0x00000000894465b0> (рдПрдХ java.lang.Object)
java.lang.Thread.run (java.base@10.0.1/Thread.java: 8/8) рдкрд░
1 рдЧрддрд┐рд░реЛрдз рдорд┐рд▓рд╛ред
рдкрд╣рд▓реЗ рдЙрдкрдзрд╛рд░рд╛ рдореЗрдВ рдЧрддрд┐рд░реЛрдз рдкрд░рд┐рджреГрд╢реНрдп рдХрд╛ рд╡рд░реНрдгрди рд╣реИ:
рдереНрд░реЗрдб -0 рдореЙрдирд┐рдЯрд░ рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░рддрд╛ рд╣реИ (рдпрд╣ рд╣рдорд╛рд░реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдореЗрдВ
рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд┐рдП рдЧрдП (рд╕реЗрдХреЗрдВрдбрд░реАрд╕реЛрд░реНрд╕) рдмреНрд▓реЙрдХ рддрдХ рдкрд╣реБрдВрдЪ рд╣реИ), рдЙрд╕реА рд╕рдордп рдпрд╣ рдзрд╛рдЧрд╛ рдПрдХ рдореЙрдирд┐рдЯрд░ рдкрдХрдбрд╝ рд░рд╣рд╛ рд╣реИ рдЬреЛ рдереНрд░реЗрдб -1 рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИ (рдпрд╣ рдЙрд╕реА рдХреЛрдб рдХреЗ рдЯреБрдХрдбрд╝реЗ рддрдХ рдкрд╣реБрдВрдЪ рд░рд╣рд╛ рд╣реИ:
рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд┐рдпрд╛ рдЧрдпрд╛ (рджреВрд╕рд░рд╛) ) рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдореЗрдВ)ред
рдЗрд╕ рдкрд░рд┐рдкрддреНрд░ рд▓реЙрдХ рдХреЛ рдЕрдиреНрдпрдерд╛
рдЧрддрд┐рд░реЛрдз рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдиреАрдЪреЗ рджреА рдЧрдИ рддрд╕реНрд╡реАрд░ рдореЗрдВ
рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдХреЛ рдЪрд┐рддреНрд░рдордп рд░реВрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

рджреВрд╕рд░реА рдЙрдкрдзрд╛рд░рд╛ рдореЗрдВ, рджреЛрдиреЛрдВ рдЕрд╡рд░реБрджреНрдз рдзрд╛рдЧреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдЯреИрдХ рдЯреНрд░реЗрд╕ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдпрд╣ рд╕реНрдЯреИрдХ рдЯреНрд░реЗрд╕ рд╣рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдереНрд░реЗрдб рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рд▓реЙрдХ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред
рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЕрдЧрд░ рд╣рдо рд▓рд╛рдЗрди рдХреЛ рджреЗрдЦреЗрдВ:
DeadlockProgram $ DeadlockRunnable.run (DeadlockProgram.java:34) рдкрд░ , рдлрд┐рд░ рд╣рдо рдХреЛрдб рдХрд╛ рд╕рдорд╕реНрдпрд╛ рднрд╛рдЧ рджреЗрдЦреЗрдВрдЧреЗ:
PrintLockedResource (secondResource);
рдпрд╣ рд▓рд╛рдЗрди рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝реНрдб рдмреНрд▓реЙрдХ рдХреА рдкрд╣рд▓реА рд▓рд╛рдЗрди рд╣реИ, рдЬреЛ рд▓реЙрдХ рдХрд╛ рдХрд╛рд░рдг рд╣реИ, рдФрд░ рд╣рдореЗрдВ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рджреВрд╕рд░реЗ рдкрд░ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рд╣реИред рдореНрдпреВрдЪреБрдЕрд▓ рд▓реЙрдХ рдХрд╛ рдХрд╛рд░рдг рд╣реИред рд╕реНрдерд┐рддрд┐ рдХреЛ рдорд╛рдкрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рджреЛрдиреЛрдВ рдереНрд░реЗрдбреНрд╕ рдХреЗ рдкрд╛рд╕ рд╕рдВрд╕рд╛рдзрди рд╕рдВрд╕рд╛рдзрди рдФрд░ рд╕рдВрд╕рд╛рдзрдирдмреА рдкрд░ рдПрдХ рд╣реА рддреБрд▓реНрдпрдХрд╛рд▓рди рдХреНрд░рдо рд╣реИред рдпрджрд┐ рд╣рдо рдРрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЖрд╡реЗрджрди рдкрд░ рдЖрдПрдВрдЧреЗ:
public class DeadlockProgram { public static void main(String[] args) throws Exception { Object resourceA = new Object(); Object resourceB = new Object(); Thread threadLockingResourceAFirst = new Thread(new DeadlockRunnable(resourceA, resourceB)); Thread threadLockingResourceBFirst = new Thread(new DeadlockRunnable(resourceA, resourceB)); threadLockingResourceAFirst.start(); Thread.sleep(500); threadLockingResourceBFirst.start(); } private static class DeadlockRunnable implements Runnable { private final Object firstResource; private final Object secondResource; public DeadlockRunnable(Object firstResource, Object secondResource) { this.firstResource = firstResource; this.secondResource = secondResource; } @Override public void run() { try { synchronized (firstResource) { printLockedResource(firstResource); Thread.sleep(1000); synchronized (secondResource) { printLockedResource(secondResource); } } } catch (InterruptedException e) { System.out.println("Exception occurred: " + e); } } private static void printLockedResource(Object resource) { System.out.println(Thread.currentThread().getName() + ": locked resource -> " + resource); } } }
рдпрд╣ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЗрдВрдЯрд░рд▓реЙрдХрд┐рдВрдЧ рдХреЗ рдмрд┐рдирд╛ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЖрдЙрдЯрдкреБрдЯ рдорд┐рд▓реЗрдЧрд╛ (рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреНрд▓рд╛рд╕ рдХреЗ рдкрддреЗ рдмрджрд▓ рдЧрдП рд╣реИрдВ):
рдереНрд░реЗрдб -0: рдЕрд╡рд░реЛрдзрд┐рдд рд╕рдВрд╕рд╛рдзрди -> java.lang.Object@1ad895d1
рдереНрд░реЗрдб -0: рдЕрд╡рд░реЛрдзрд┐рдд рд╕рдВрд╕рд╛рдзрди -> java.lang.Object@6e41d7dd
рдереНрд░реЗрдб -1: рд▓реЙрдХ рд░рд┐рд╕реЛрд░реНрд╕ -> java.lang.Object@1ad895d1
рдереНрд░реЗрдб -1: рд▓реЙрдХреНрдб рд░рд┐рд╕реЛрд░реНрд╕ -> java.lang.Object@6e41d7dd
, , thread dump, . ( deadlock-). , .
Thread Dump-
.
JVM . ( , ).
.
- тАФ Thread Dump Analyzers (TDAs). Java thread dump- - , . , . , .
TDA:
. .
рдирд┐рд╖реНрдХрд░реНрд╖
Thread dump- тАФ Java-, . , .
deadlock, . . , тАФ .
, Java- thread dump-. , .
, thread dump тАФ ┬л ┬╗ , , Java-.
Java . , deadlock- ., .