html
рдЬрд╛рд╡рд╛ рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ рдореЗрдВ рдорд╣рд╛рд░рдд: рдереНрд░реЗрдб рдЬреЙрдЗрдВрд╕ рдХреЛ рд╕рдордЭрдирд╛
рд╕рд╛рдордЧреНрд░реА рддрд╛рд▓рд┐рдХрд╛
- рдкрд░рд┐рдЪрдп ................................................. 1
- рдЬрд╛рд╡рд╛ рдереНрд░реЗрдбреНрд╕ рдХреЛ рд╕рдордЭрдирд╛ ...... 3
- рдЬрд╛рд╡рд╛ рдореЗрдВ join() рд╡рд┐рдзрд┐ .......... 7
- join() рдХрд╛ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди ..................................... 12
- join() рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдкрдХреНрд╖ рдФрд░ рд╡рд┐рдкрдХреНрд╖ .................................................. 17
- рдереНрд░реЗрдб рдЬреЙрдЗрдВрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрдм рдФрд░ рдХрд╣рд╛рдБ рдХрд░реЗрдВ .................................... 21
- рдирд┐рд╖реНрдХрд░реНрд╖ ................................................... 25
рдкрд░рд┐рдЪрдп
рдЬрд╛рд╡рд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ, рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ рдПрдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдлреАрдЪрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрднрд░рддрд╛ рд╣реИ рдЬреЛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдПрдХ рд╕рд╛рде рдХрдИ рдСрдкрд░реЗрд╢рдВрд╕ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рдиреНрд╕ рдХреА рджрдХреНрд╖рддрд╛ рдФрд░ рдкреНрд░рджрд░реНрд╢рди рдмрдврд╝рддрд╛ рд╣реИред рдереНрд░реЗрдбреНрд╕ рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рдЕрдиреЗрдХ рдЙрдкрдХрд░рдгреЛрдВ рдореЗрдВ, join() рд╡рд┐рдзрд┐ рдереНрд░реЗрдб рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рд╕рд┐рдирдХреНрд░реЛрдирд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рднреВрдорд┐рдХрд╛ рдирд┐рднрд╛рддреА рд╣реИред рдпрд╣ рдИрдмреБрдХ рдЬрд╛рд╡рд╛ рдореЗрдВ рдереНрд░реЗрдб рдЬреЙрдЗрдВрд╕ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдореЗрдВ рдЧрд╣рд░рд╛рдИ рд╕реЗ рдЙрддрд░рддрд╛ рд╣реИ, рдЙрдирдХреЗ рдорд╣рддреНрд╡, рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди, рд▓рд╛рдн рдФрд░ рд╕рдВрднрд╛рд╡рд┐рдд рдХрдорд┐рдпреЛрдВ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рддрд╛ рд╣реИред рдЪрд╛рд╣реЗ рдЖрдк рдПрдХ рд╢реБрд░реБрдЖрдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╣реЛрдВ рдЬреЛ рдореВрд▓ рдмрд╛рддреЗрдВ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрддреНрд╕реБрдХ рд╣реИрдВ рдпрд╛ рдПрдХ рдбреЗрд╡рд▓рдкрд░ рдЬреЛ рдЕрдкрдиреА рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ рдХреМрд╢рд▓ рдХреЛ рдкрд░рд┐рд╖реНрдХреГрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рдпрд╣ рдЧрд╛рдЗрдб рдЬрд╛рд╡рд╛ рдереНрд░реЗрдбреНрд╕ рдХреА рд╕рдордЭ рдФрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЛ рдЙрдиреНрдирдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реНрдпрд╛рдкрдХ рдЕрдВрддрд░реНрджреГрд╖реНрдЯрд┐ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
рдЬрд╛рд╡рд╛ рдереНрд░реЗрдбреНрд╕ рдХреЛ рд╕рдордЭрдирд╛
рдереНрд░реЗрдбреНрд╕ рдХреНрдпрд╛ рд╣реИрдВ?
рдЬрд╛рд╡рд╛ рдореЗрдВ, рдПрдХ thread рд╕рдмрд╕реЗ рдЫреЛрдЯрд╛ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдпреВрдирд┐рдЯ рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рднреАрддрд░ рдЕрдиреНрдп рдереНрд░реЗрдбреНрд╕ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЬрд╛рд╡рд╛ рдХреА рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ рдХреНрд╖рдорддрд╛рдПрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рдиреНрд╕ рдХреЛ рдПрдХ рд╕рд╛рде рдХрдИ рдСрдкрд░реЗрд╢рдВрд╕ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИрдВ, рд╕рдВрд╕рд╛рдзрди рдЙрдкрдпреЛрдЧ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рддреА рд╣реИрдВ рдФрд░ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рддреА рд╣реИрдВред
рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ рдХрд╛ рдорд╣рддреНрд╡
рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ рдПрдкреНрд▓рд┐рдХреЗрд╢рдиреНрд╕ рдХреЛ рдПрдХ рд╕рд╛рде рдХрдИ рдХрд╛рд░реНрдп рд╕рдВрднрд╛рд▓рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдмрдирд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓рд╛рдн рд╣реЛрддреЗ рд╣реИрдВ:
- рдмреЗрд╣рддрд░ рдкреНрд░рджрд░реНрд╢рди: рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рдХрдИ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдХреЗ, рдПрдкреНрд▓рд┐рдХреЗрд╢рдиреНрд╕ рд╕рд┐рд╕реНрдЯрдо рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдЕрдзрд┐рдХ рдХреБрд╢рд▓рддрд╛ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
- рд╕реБрдзрд░реА рд╣реБрдИ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛: рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлреЗрд╕ рдкреГрд╖реНрдарднреВрдорд┐ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдЪрд▓рдиреЗ рдХреЗ рджреМрд░рд╛рди рдЙрддреНрддрд░рджрд╛рдпреА рд░рд╣рддрд╛ рд╣реИред
- рдмреЗрд╣рддрд░ рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдмрдВрдзрди: рдереНрд░реЗрдбреНрд╕ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдкреНрд░рднрд╛рд╡реА рдврдВрдЧ рд╕реЗ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдмреЙрдЯрд▓рдиреЗрдХреНрд╕ рдХреЛ рд░реЛрдХрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЬрд╛рд╡рд╛ рдореЗрдВ рдереНрд░реЗрдбреНрд╕ рдмрдирд╛рдирд╛
рдЬрд╛рд╡рд╛ рдореЗрдВ рдереНрд░реЗрдбреНрд╕ рдмрдирд╛рдиреЗ рдХреЗ рджреЛ рдореБрдЦреНрдп рддрд░реАрдХреЗ рд╣реИрдВ:
- Thread рдХреНрд▓рд╛рд╕ рдХреЛ рд╡рд┐рд╕реНрддрд╛рд░ рджреЗрдирд╛:
12345678class MyThread extends Thread {public void run() {// рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп}}MyThread thread = new MyThread();thread.start(); - Runnable рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛:
12345678class MyRunnable implements Runnable {public void run() {// рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп}}Thread thread = new Thread(new MyRunnable());thread.start();
рдереНрд░реЗрдб рдЬреАрд╡рдирдЪрдХреНрд░
рдереНрд░реЗрдб рдХреЗ рдЬреАрд╡рдирдЪрдХреНрд░ рдХреЛ рд╕рдордЭрдирд╛ рдкреНрд░рднрд╛рд╡реА рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ:
- New: рдереНрд░реЗрдб рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдЕрднреА рд╢реБрд░реВ рдирд╣реАрдВ рд╣реБрдЖ рд╣реИред
- Runnable: рдереНрд░реЗрдб рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдкрд╛рддреНрд░ рд╣реИред
- Running: рдереНрд░реЗрдб рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛ рд░рд╣рд╛ рд╣реИред
- Blocked/Waiting: рдереНрд░реЗрдб рдХрд┐рд╕реА рд╕рдВрд╕рд╛рдзрди рдпрд╛ рдШрдЯрдирд╛ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣рд╛ рд╣реИред
- Terminated: рдереНрд░реЗрдб рдиреЗ рдЕрдкрдирд╛ рдирд┐рд╖реНрдкрд╛рджрди рдкреВрд░рд╛ рдХрд░ рд▓рд┐рдпрд╛ рд╣реИред
рдЬрд╛рд╡рд╛ рдореЗрдВ join() рд╡рд┐рдзрд┐
join() рдХреНрдпрд╛ рд╣реИ?
рдЬрд╛рд╡рд╛ рдореЗрдВ join() рд╡рд┐рдзрд┐ рдПрдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдЙрдкрдХрд░рдг рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдереНрд░реЗрдбреНрд╕ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рд╕рд┐рдирдХреНрд░реЛрдирд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬрдм рдПрдХ рдереНрд░реЗрдб рдХрд┐рд╕реА рдЕрдиреНрдп рдереНрд░реЗрдб рдкрд░ join() рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдереНрд░реЗрдб рдХреЗ рдЕрдкрдиреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рдкреВрд░рд╛ рд╣реЛрдиреЗ рддрдХ рд░реБрдХ рдЬрд╛рддрд╛ рд╣реИред
join() рдХреА рд╕рд┐рдВрдЯреИрдХреНрд╕
1 |
public final void join() throws InterruptedException |
join() рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ
рджреЛ рдереНрд░реЗрдбреНрд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ: Main Thread рдФрд░ Thread One.
- join() рдХреЗ рдмрд┐рдирд╛: Main Thread рдЕрдкрдирд╛ рдирд┐рд╖реНрдкрд╛рджрди рдЬрд╛рд░реА рд░рдЦрддрд╛ рд╣реИ рдмрд┐рдирд╛ рдпрд╣ рджреЗрдЦрдиреЗ рдХрд┐ Thread One рд╕рдорд╛рдкреНрдд рд╣реБрдЖ рд╣реИ рдпрд╛ рдирд╣реАрдВ, рдЬрд┐рд╕рд╕реЗ рдЕрд╕рдВрдЧрдд рдпрд╛ рдЕрдзреВрд░реЗ рдкрд░рд┐рдгрд╛рдо рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред
- join() рдХреЗ рд╕рд╛рде: рдЬрдм Main Thread threadOne.join() рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдпрд╣ Thread One рдХреЗ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рддрдХ рдЕрдкрдирд╛ рдирд┐рд╖реНрдкрд╛рджрди рд░реЛрдХ рджреЗрддрд╛ рд╣реИ, рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддреЗ рд╣реБрдП рдХрд┐ Thread One рдХреЗ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдкрд░ рдирд┐рд░реНрднрд░ рдСрдкрд░реЗрд╢рдВрд╕ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрдВред
join() рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗрд╕
- рдЯрд╛рд╕реНрдХ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛: рдЬрдм рдкрд╢реНрдЪрд╛рдд рдХреЗ рдЯрд╛рд╕реНрдХ рдкреВрд░реНрд╡рд╡рд░реНрддреА рдереНрд░реЗрдбреНрд╕ рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреЗ рд╣реИрдВред
- рдХрдИ рдереНрд░реЗрдбреНрд╕ рдХрд╛ рд╕рдордиреНрд╡рдп рдХрд░рдирд╛: рдереНрд░реЗрдбреНрд╕ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреНрд░рдо рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдирд╛ рддрд╛рдХрд┐ рдбреЗрдЯрд╛ рдХреА рдирд┐рд░рдВрддрд░рддрд╛ рдмрдиреА рд░рд╣реЗред
- рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдмрдВрдзрди: рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдХрд┐ рд╕рдВрд╕рд╛рдзрди рддрднреА рд░рд┐рд▓реАрдЬрд╝ рдпрд╛ рдкреНрд░реЛрд╕реЗрд╕ рдХрд┐рдП рдЬрд╛рдПрдВ рдЬрдм рд╡рд┐рд╢рд┐рд╖реНрдЯ рдереНрд░реЗрдб рдиреЗ рдЕрдкрдиреЗ рдСрдкрд░реЗрд╢рдВрд╕ рдкреВрд░реА рдХрд░ рд▓реА рд╣реЛрдВред
join() рдХрд╛ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
рд╕реНрдЯреЗрдк-рдмрд╛рдп-рд╕реНрдЯреЗрдк рд╡рд┐рд╡рд░рдг
рдЖрдЗрдП join() рд╡рд┐рдзрд┐ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЙрджрд╛рд╣рд░рдг рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВред
1. рдПрдХ рдереНрд░реЗрдб рдмрдирд╛рдирд╛
1 2 3 4 5 6 7 8 9 |
Thread threadOne = new Thread(new Runnable() { public void run() { for(int i = 0; i < 1000; i++) { counterOne++; } System.out.println("Counter One: " + counterOne); } }); threadOne.start(); |
рд╡реНрдпрд╛рдЦреНрдпрд╛:
- рдПрдХ рдирдпрд╛ рдереНрд░реЗрдб, Thread One, рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред
- run() рд╡рд┐рдзрд┐ рдХреЗ рдЕрдВрджрд░, рдПрдХ рд▓реВрдк counterOne рдХреЛ 1000 рдмрд╛рд░ рдмрдврд╝рд╛рддрд╛ рд╣реИред
- рд▓реВрдк рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, counterOne рдХрд╛ рдорд╛рди рдкреНрд░рд┐рдВрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
- рдлрд┐рд░ рдереНрд░реЗрдб рдХреЛ threadOne.start(); рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
2. join() рдХреЗ рдмрд┐рдирд╛ рдирд┐рд╖реНрдкрд╛рджрди
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
public class Main { static int counterOne = 0; public static void main(String[] args) { Thread threadOne = new Thread(new Runnable() { public void run() { for(int i = 0; i < 1000; i++) { counterOne++; } System.out.println("Counter One: " + counterOne); } }); threadOne.start(); System.out.println("Counter One: " + counterOne); } } |
рдЕрдкреЗрдХреНрд╖рд┐рдд рдЖрдЙрдЯрдкреБрдЯ:
1 2 |
Counter One: 0 Counter One: 1000 |
рд╡реНрдпрд╛рдЦреНрдпрд╛:
- Main Thread рдиреЗ Thread One рдХреЛ рд╢реБрд░реВ рдХрд┐рдпрд╛ред
- рдлреМрд░рди counterOne рдХрд╛ рдорд╛рди рдкреНрд░рд┐рдВрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдЕрднреА рднреА 0 рд╣реИ рдХреНрдпреЛрдВрдХрд┐ Thread One рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реИред
- рдПрдХ рдмрд╛рд░ рдЬрдм Thread One рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ Counter One: 1000 рдкреНрд░рд┐рдВрдЯ рдХрд░рддрд╛ рд╣реИред
рд╕рдорд╕реНрдпрд╛:
- Main Thread Thread One рдХреЗ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдирд╣реАрдВ рдХрд░рддрд╛, рдЬрд┐рд╕рд╕реЗ рдкрд╣рд▓реА рдкреНрд░рд┐рдВрдЯ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдореЗрдВ рдЕрдзреВрд░рд╛ рдорд╛рди рджрд┐рдЦрддрд╛ рд╣реИред
3. рд╕рд┐рдирдХреНрд░реЛрдирд╛рдЗрдЬрд╝реЗрд╢рди рдХреЗ рд▓рд┐рдП join() рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
public class Main { static int counterOne = 0; public static void main(String[] args) throws InterruptedException { Thread threadOne = new Thread(new Runnable() { public void run() { for(int i = 0; i < 1000; i++) { counterOne++; } System.out.println("Counter One: " + counterOne); } }); threadOne.start(); threadOne.join(); // Main Thread рдереНрд░реЗрдб One рдХреЗ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░рддрд╛ рд╣реИ System.out.println("Counter One after join: " + counterOne); } } |
рдЕрдкреЗрдХреНрд╖рд┐рдд рдЖрдЙрдЯрдкреБрдЯ:
1 2 |
Counter One: 1000 Counter One after join: 1000 |
рд╡реНрдпрд╛рдЦреНрдпрд╛:
- Thread One рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, Main Thread threadOne.join(); рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред
- рдпрд╣ Main Thread рдХреЛ рддрдм рддрдХ рд░реБрдХрдиреЗ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ Thread One рдЕрдкрдирд╛ рдирд┐рд╖реНрдкрд╛рджрди рдкреВрд░рд╛ рдирд╣реАрдВ рдХрд░ рд▓реЗрддрд╛ред
- Thread One рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, Main Thread рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ рдФрд░ counterOne рдХрд╛ рдЕрдВрддрд┐рдо рдорд╛рди рдкреНрд░рд┐рдВрдЯ рдХрд░рддрд╛ рд╣реИред
4. рд╕рд┐рдирдХреНрд░реЛрдирд╛рдЗрдЬрд╝реЗрд╢рди рдХреЗ рд▓рд┐рдП sleep() рд╕реЗ рдмрдЪрдирд╛
sleep() рдХрд╛ рдЙрдкрдпреЛрдЧ рдереНрд░реЗрдб рдХреЗ рд▓рд┐рдП рдЗрдВрддрдЬрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рдиреЗ рд╕реЗ рдЕрдХреНрд╖рдореНрдпрддрд╛рдПрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
public class Main { static int counterOne = 0; public static void main(String[] args) throws InterruptedException { Thread threadOne = new Thread(new Runnable() { public void run() { for(int i = 0; i < 1000; i++) { counterOne++; } System.out.println("Counter One: " + counterOne); } }); threadOne.start(); Thread.sleep(1000); // рдЕрдХреНрд╖рдореНрдп рдЗрдВрддрдЬрд╛рд░ System.out.println("Counter One after sleep: " + counterOne); } } |
рд╕рдорд╕реНрдпрд╛:
- Main Thread рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЕрд╡рдзрд┐ рдХреЗ рд▓рд┐рдП рд╕реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдпрджрд┐ Thread One рдЬрд▓реНрджреА рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рд╕рдордп рдмрд░реНрдмрд╛рдж рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдпрджрд┐ Thread One рдЕрдзрд┐рдХ рд╕рдордп рд▓реЗрддрд╛ рд╣реИ рддреЛ рдЕрдзреВрд░реЗ рдкрд░рд┐рдгрд╛рдо рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред
5. join() рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд╛рдн
- рдХреБрд╢рд▓рддрд╛: рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдереНрд░реЗрдб рдХреЗ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рддрдХ рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ рдЗрдВрддрдЬрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рдордирдорд╛рдиреЗ рд╡рд┐рд▓рдВрдм рд╕реЗ рдмрдЪрддреЗ рд╣реБрдПред
- рд╡рд┐рд╢реНрд╡рд╕рдиреАрдпрддрд╛: рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЖрд╡рд╢реНрдпрдХ рдереНрд░реЗрдбреНрд╕ рдХреЗ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рд╣реА рдирд┐рд░реНрднрд░ рдСрдкрд░реЗрд╢рдВрд╕ рд╣реЛрдВред
- рд╕рд░рд▓рддрд╛: рдЬрдЯрд┐рд▓ рдХрдВрдбреАрд╢рди рдЪреЗрдХ рдХреЗ рдмрд┐рдирд╛ рдереНрд░реЗрдб рд╕рд┐рдирдХреНрд░реЛрдирд╛рдЗрдЬрд╝реЗрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реАрдзрд╛ рддрд░реАрдХрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХреЛрдб рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
public class Main { // рд╕рд╛рдЭрд╛ рдХрд╛рдЙрдВрдЯрд░ рд╡реЗрд░рд┐рдПрдмрд▓ static int counterOne = 0; public static void main(String[] args) throws InterruptedException { // Runnable рдЗрдореНрдкреНрд▓реАрдореЗрдВрдЯреЗрд╢рди рдХреЗ рд╕рд╛рде рдирдпрд╛ рдереНрд░реЗрдб рдмрдирд╛рдирд╛ Thread threadOne = new Thread(new Runnable() { public void run() { // counterOne рдХреЛ 1000 рдмрд╛рд░ рдмрдврд╝рд╛рдирд╛ for(int i = 0; i < 1000; i++) { counterOne++; } // counterOne рдХрд╛ рдЕрдВрддрд┐рдо рдорд╛рди рдкреНрд░рд┐рдВрдЯ рдХрд░рдирд╛ System.out.println("Counter One: " + counterOne); } }); // threadOne рдХреЛ рд╢реБрд░реВ рдХрд░рдирд╛ threadOne.start(); // Main рдереНрд░реЗрдб threadOne рдХреЗ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░рддрд╛ рд╣реИ threadOne.join(); // threadOne рдХреЗ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж counterOne рдХрд╛ рдорд╛рди рдкреНрд░рд┐рдВрдЯ рдХрд░рдирд╛ System.out.println("Counter One after join: " + counterOne); } } |
рдЖрдЙрдЯрдкреБрдЯ рд╡реНрдпрд╛рдЦреНрдпрд╛
1 2 |
Counter One: 1000 Counter One after join: 1000 |
- рдкрд╣рд▓рд╛ рдкреНрд░рд┐рдВрдЯ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ: Thread One рдХреЗ рдЕрдВрджрд░, рд▓реВрдк рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдпрд╣ Counter One: 1000 рдкреНрд░рд┐рдВрдЯ рдХрд░рддрд╛ рд╣реИред
- рджреВрд╕рд░рд╛ рдкреНрд░рд┐рдВрдЯ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ: threadOne.join(); рдХреЗ рдмрд╛рдж, Main Thread Counter One after join: 1000 рдкреНрд░рд┐рдВрдЯ рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддреЗ рд╣реБрдП рдХрд┐ counterOne рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдмрдврд╝рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдереНрд░реЗрдбреНрд╕ рдХреЗ рдмреАрдЪ рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝реЗрд╢рди рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рд╣реИред
join() рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдкрдХреНрд╖ рдФрд░ рд╡рд┐рдкрдХреНрд╖
рдкрдХреНрд╖
- рдЙрдЪрд┐рдд рд╕рд┐рдирдХреНрд░реЛрдирд╛рдЗрдЬрд╝реЗрд╢рди рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ:
- рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдереНрд░реЗрдб рдЕрдкрдирд╛ рдирд┐рд╖реНрдкрд╛рджрди рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИ рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдЖрдЧреЗ рдмрдврд╝рд╛ рдЬрд╛рдП, рдбреЗрдЯрд╛ рдХреА рдирд┐рд░рдВрддрд░рддрд╛ рдмрдирд╛рдП рд░рдЦрддреЗ рд╣реБрдПред
- рдереНрд░реЗрдб рд╕рдордиреНрд╡рдп рдХреЛ рд╕рд░рд▓ рдмрдирд╛рддрд╛ рд╣реИ:
- рдЬрдЯрд┐рд▓ рд╕рд┐рдирдХреНрд░реЛрдирд╛рдИрдЬрд╝реЗрд╢рди рдореИрдХреЗрдирд┐рдЬреНрдо рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдереНрд░реЗрдб рдкреНрд░рдмрдВрдзрди рдЕрдзрд┐рдХ рд╕реАрдзрд╛ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
- рд░реИрд╕ рдХрдВрдбреАрд╢рдВрд╕ рдХреЛ рд░реЛрдХрддрд╛ рд╣реИ:
- рдереНрд░реЗрдбреНрд╕ рдХреЗ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдХреЛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдХреЗ, рдпрд╣ рд░реИрд╕ рдХрдВрдбреАрд╢рдВрд╕ рдХреА рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдХрдИ рдереНрд░реЗрдбреНрд╕ рдПрдХ рд╕рд╛рде рд╕рд╛рдЭрд╛ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рддрдХ рдкрд╣реБрдВрдЪрддреЗ рд╣реИрдВред
- рдХреЛрдб рдХреА рдкрдардиреАрдпрддрд╛ рдмрдврд╝рд╛рддрд╛ рд╣реИ:
- рдереНрд░реЗрдб рдирд┐рд╖реНрдкрд╛рджрди рдХреНрд░рдо рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдкрд╖реНрдЯ рдФрд░ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рддрд░реАрдХрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдХреЛрдб рдХреА рд░рдЦрд░рдЦрд╛рд╡рд╢реАрд▓рддрд╛ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рддрд╛ рд╣реИред
рд╡рд┐рдкрдХреНрд╖
- рдбреЗрдбрд▓реЙрдХреНрд╕ рдХрд╛ рд╕рдВрднрд╛рд╡рд┐рдд рдЬреЛрдЦрд┐рдо:
- join() рдХреЗ рдЕрдиреБрдЪрд┐рдд рдЙрдкрдпреЛрдЧ рд╕реЗ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдРрд╕реЗ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдореЗрдВ рдЬрд╣рд╛рдВ рдХрдИ рдереНрд░реЗрдб рдПрдХ-рджреВрд╕рд░реЗ рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдбреЗрдбрд▓реЙрдХреНрд╕ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд╣рд╛рдВ рдереНрд░реЗрдбреНрд╕ рдЕрдирд┐рд╢реНрдЪрд┐рддрдХрд╛рд▓ рддрдХ рдЗрдВрддрдЬрд╛рд░ рдХрд░рддреЗ рд░рд╣рддреЗ рд╣реИрдВред
- рдмрдврд╝рд╛ рд╣реБрдЖ рдЗрдВрддрдЬрд╛рд░ рд╕рдордп:
- рдпрджрд┐ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рдереНрд░реЗрдб рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╕рдордп рд▓реЗрддрд╛ рд╣реИ, рддреЛ рдХреЙрд▓рд┐рдВрдЧ рдереНрд░реЗрдб рдирд┐рд╖реНрдХреНрд░рд┐рдп рд░рд╣рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рдмрд╛рдзрд╛рдПрдВ рдЙрддреНрдкрдиреНрди рд╣реЛ рд╕рдХрддреА рд╣реИрдВред
- рд╕рдВрд╕рд╛рдзрди рдУрд╡рд░рд╣реЗрдб:
- рдмрд╣реБрдд рдЕрдзрд┐рдХ рдереНрд░реЗрдбреНрд╕ рд╡рд╛рд▓реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рдиреНрд╕ рдореЗрдВ join() рдХрд╛ рдЕрддреНрдпрдзрд┐рдХ рдЙрдкрдпреЛрдЧ рд╕рд┐рд╕реНрдЯрдо рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдкрд░ рднрд╛рд░ рдбрд╛рд▓ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдкреВрд░реЗ рдкреНрд░рджрд░реНрд╢рди рдкрд░ рдкреНрд░рднрд╛рд╡ рдкрдбрд╝рддрд╛ рд╣реИред
- рдкреИрд░рд╛рд▓рд▓рд┐рдЬреНрдо рдореЗрдВ рдХрдореА:
- рдмщвСреА рд╕рд┐рдирдХреНрд░реЛрдирд╛рдЗрдЬрд╝реЗрд╢рди рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ рдХреЗ рд▓рд╛рднреЛрдВ рдХреЛ рдХрдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдереНрд░реЗрдбреНрд╕ рдХреЛ рдЗрдВрддрдЬрд╛рд░ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ рдФрд░ рд╕рдорд╛рдирд╛рдВрддрд░ рдирд┐рд╖реНрдкрд╛рджрди рд╕реАрдорд┐рдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
рдереНрд░реЗрдб рдЬреЙрдЗрдВрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрдм рдФрд░ рдХрд╣рд╛рдБ рдХрд░реЗрдВ
join() рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрдм рдХрд░реЗрдВ
- рдирд┐рд░реНрднрд░ рдЯрд╛рд╕реНрдХ:
- рдЬрдм рдПрдХ рдереНрд░реЗрдб рдХрд╛ рд╕рдорд╛рдкреНрдд рд╣реЛрдирд╛ рджреВрд╕рд░реЗ рдереНрд░реЗрдб рдХреЗ рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рдЬреИрд╕реЗ рдбреЗрдЯрд╛ рдХреЛ рдЪрд░рдгреЛрдВ рдореЗрдВ рдкреНрд░реЛрд╕реЗрд╕ рдХрд░рдирд╛ред
- рд╕рдВрд╕рд╛рдзрди рд╕рдлрд╛рдИ:
- рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдХрд┐ рдереНрд░реЗрдбреНрд╕ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рд░рд┐рд▓реАрдЬрд╝ рдХрд░реЗрдВ рдпрд╛ рд╕рд╛рдл-рд╕рдлрд╛рдИ рдСрдкрд░реЗрд╢рдВрд╕ рдХреЛ рдкреВрд░рд╛ рдХрд░реЗрдВ рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рдорд╛рдкреНрдд рд╣реЛред
- рдХреНрд░рдордмрджреНрдз рдСрдкрд░реЗрд╢рдВрд╕:
- рдЬрдм рд╡рд┐рд╢рд┐рд╖реНрдЯ рдСрдкрд░реЗрд╢рдВрд╕ рдХреЛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдХреНрд░рдо рдореЗрдВ рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рднреАрддрд░ рддрд╛рд░реНрдХрд┐рдХ рдкреНрд░рд╡рд╛рд╣ рдмрдирд╛рдП рд░рдЦрддреЗ рд╣реБрдПред
- рдкрд░рд┐рдгрд╛рдореЛрдВ рдХрд╛ рдПрдХрддреНрд░реАрдХрд░рдг:
- рдЬрдм рдореБрдЦреНрдп рдереНрд░реЗрдб рдХреЛ рдХрдИ рд╡рд░реНрдХрд░ рдереНрд░реЗрдбреНрд╕ рд╕реЗ рдкрд░рд┐рдгрд╛рдо рдпрд╛ рд╕рд╛рд░рд╛рдВрд╢ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЙрдирдХреЗ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рджред
join() рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд╣рд╛рдБ рдХрд░реЗрдВ
- рдбреЗрдЯрд╛ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдкрд╛рдЗрдкрд▓рд╛рдЗрдиреНрд╕:
- рдХрдИ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдЪрд░рдгреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдбреЗрдЯрд╛ рдХреЗ рдкреНрд░рд╡рд╛рд╣ рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдирд╛, рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддреЗ рд╣реБрдП рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдЪрд░рдг рдЕрдЧрд▓реЗ рд╕реЗ рдкрд╣рд▓реЗ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рдПред
- рдпреВрдЬрд░ рдЗрдВрдЯрд░рдлреЗрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рдиреНрд╕:
- рдкреГрд╖реНрдарднреВрдорд┐ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдпреВрдЬрд░ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛, рдЕрд╕рдВрдЧрддрддрд╛рдУрдВ рдХреЛ рд░реЛрдХрддреЗ рд╣реБрдПред
- рд╕рд░реНрд╡рд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рдиреНрд╕:
- рдХреНрд▓рд╛рдЗрдВрдЯ рдХрдиреЗрдХреНрд╢рдВрд╕ рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдирд╛ рдФрд░ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдХрд┐ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдереНрд░реЗрдбреНрд╕ рдЕрдкрдиреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░реЗрдВ рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рд╕рд░реНрд╡рд░ рдмрдВрдж рд╣реЛред
- рдмреИрдЪ рдСрдкрд░реЗрд╢рдиреНрд╕:
- рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдирд╛ рдЬрд╣рд╛рдВ рдкреНрд░рддреНрдпреЗрдХ рдереНрд░реЗрдб рдбреЗрдЯрд╛ рдХрд╛ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ рдкреНрд░реЛрд╕реЗрд╕ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдореБрдЦреНрдп рдереНрд░реЗрдб рд╕рднреА рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░рддрд╛ рд╣реИ рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдЖрдЧреЗ рдмрдврд╝реЗред
рд╕рд░реНрд╡рд╢реНрд░реЗрд╖реНрда рдкреНрд░рдерд╛рдПрдБ
- рдиреЗрд╕реНрдЯреЗрдб joins рд╕реЗ рдмрдЪреЗрдВ:
- рдРрд╕реА рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЛ рдХрдо рдХрд░рдирд╛ рдЬрд╣рд╛рдВ рдХрдИ рдереНрд░реЗрдбреНрд╕ рдПрдХ-рджреВрд╕рд░реЗ рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рддрд╛рдХрд┐ рдбреЗрдбрд▓реЙрдХреНрд╕ рд╕реЗ рдмрдЪрд╛ рдЬрд╛ рд╕рдХреЗред
- рдЙрдкрд╡рд╛рджреЛрдВ рдХреЛ рдЧреНрд░реЗрд╕рдлреБрд▓реА рд╣реИрдВрдбрд▓ рдХрд░реЗрдВ:
- join() рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдЙрдЪрд┐рдд рдПрдХреНрд╕реЗрдкреНрд╢рди рд╣реИрдВрдбрд▓рд┐рдВрдЧ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рддрд╛рдХрд┐ рдЗрдВрдЯрд░рдкреНрдЯреЗрдб рдПрдХреНрд╕реЗрдкреНрд╢рдВрд╕ рдХреЛ рдореИрдиреЗрдЬ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рд╕реНрдерд┐рд░рддрд╛ рдмрдиреА рд░рд╣реЗред
- join() рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реАрдорд┐рдд рдХрд░реЗрдВ:
- рдХреБрд╢рд▓рддрд╛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдФрд░ рдЕрддреНрдпрдзрд┐рдХ рдереНрд░реЗрдб рдЗрдВрддрдЬрд╛рд░ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП join() рдХрд╛ рд╡рд┐рд╡реЗрдХреА рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред
- рдЕрдиреНрдп рд╕рд┐рдирдХреНрд░реЛрдирд╛рдЗрдЬрд╝реЗрд╢рди рдЯреВрд▓реНрд╕ рдХреЗ рд╕рд╛рде рд╕рдВрдпреЛрдЬрди рдХрд░реЗрдВ:
- рдЬрдЯрд┐рд▓ рдереНрд░реЗрдб рдЗрдВрдЯрд░реИрдХреНрд╢рдВрд╕ рдХреЛ рдкреНрд░рднрд╛рд╡реА рдврдВрдЧ рд╕реЗ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП wait(), notify(), рдФрд░ рд╕рд┐рдирдХреНрд░реЛрдирд╛рдЗрдЬрд╝реЗрд╢рди рдмреНрд▓реЙрдХреНрд╕ рдЬреИрд╕реЗ рдЕрдиреНрдп рд╕рд┐рдирдХреНрд░реЛрдирд╛рдЗрдЬрд╝реЗрд╢рди рдореИрдХреЗрдирд┐рдЬреНрдо рдХрд╛ рд▓рд╛рдн рдЙрдард╛рдирд╛ред
рдирд┐рд╖реНрдХрд░реНрд╖
join() рд╡рд┐рдзрд┐ рдЬрд╛рд╡рд╛ рдХреЗ рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ рдЖрд╕реНрддреЗ рдореЗрдВ рдПрдХ рдЕрдирд┐рд╡рд╛рд░реНрдп рдЙрдкрдХрд░рдг рд╣реИ, рдЬреЛ рдереНрд░реЗрдб рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рд╕рд┐рдирдХреНрд░реЛрдирд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдФрд░ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдЯрд╛рд╕реНрдХ рдкреВрд░реНрдгрддрд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рдореЗрдХреЗрдирд┐рдЬреНрдо рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИред рдПрдХ рдереНрд░реЗрдб рдХреЛ рджреВрд╕рд░реЗ рдХреЗ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдВрддрдЬрд╛рд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдХрд░, join() рд╕рдордиреНрд╡рд┐рдд рдСрдкрд░реЗрд╢рдВрд╕, рдбреЗрдЯрд╛ рдХреА рдирд┐рд░рдВрддрд░рддрд╛, рдФрд░ рдХреБрд╢рд▓ рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдмрдВрдзрди рдХреЛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдмрдирд╛рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╕рднреА рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдЙрдкрдХрд░рдгреЛрдВ рдХреА рддрд░рд╣, рдЗрд╕реЗ рд╕рд╛рд╡рдзрд╛рдиреАрдкреВрд░реНрд╡рдХ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рддрд╛рдХрд┐ рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдорд╕реНрдпрд╛рдУрдВ рдЬреИрд╕реЗ рдбреЗрдбрд▓реЙрдХреНрд╕ рдФрд░ рдкреНрд░рджрд░реНрд╢рди рдмреЙрдЯрд▓рдиреЗрдХреНрд╕ рд╕реЗ рдмрдЪрд╛ рдЬрд╛ рд╕рдХреЗред join() рдХреЛ рдХрдм рдФрд░ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╕рдордЭрдирд╛ рдЙрди рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдЬреЛ рдЬрд╛рд╡рд╛ рдХреА рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ рдХреНрд╖рдорддрд╛рдУрдВ рдХреА рдкреВрд░реА рдХреНрд╖рдорддрд╛ рдХрд╛ рд▓рд╛рдн рдЙрдард╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЬреИрд╕реЗ-рдЬреИрд╕реЗ рдЖрдк рдЕрдкрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рдиреНрд╕ рдореЗрдВ join() рдХреЛ рдПрдХреАрдХреГрдд рдХрд░рддреЗ рд╣реИрдВ, рд╕реНрдкрд╖реНрдЯ рд╕рд┐рдирдХреНрд░реЛрдирд╛рдЗрдЬрд╝реЗрд╢рди рд░рдгрдиреАрддрд┐рдпреЛрдВ, рдордЬрдмреВрдд рдПрдХреНрд╕реЗрдкреНрд╢рди рд╣реИрдВрдбрд▓рд┐рдВрдЧ, рдФрд░ рд╕реЛрдЪ-рд╕рдордЭрдХрд░ рдереНрд░реЗрдб рдкреНрд░рдмрдВрдзрди рдХреЛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рджреЗрдВ рддрд╛рдХрд┐ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓, рдХреБрд╢рд▓, рдФрд░ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рд╕рдорд╛рдзрд╛рди рдмрдирд╛рдП рдЬрд╛ рд╕рдХреЗрдВред
Keywords: рдЬрд╛рд╡рд╛ рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ, рдереНрд░реЗрдб рд╕рд┐рдирдХреНрд░реЛрдирд╛рдЗрдЬрд╝реЗрд╢рди, join рд╡рд┐рдзрд┐, рдЬрд╛рд╡рд╛ рдереНрд░реЗрдбреНрд╕, рд╕рдордХрд╛рд▓реАрди рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ, рдереНрд░реЗрдб рдкреНрд░рдмрдВрдзрди, рдЬрд╛рд╡рд╛ рдкреНрд░рджрд░реНрд╢рди, рдереНрд░реЗрдб рдЬреАрд╡рдирдЪрдХреНрд░, рд╕рд┐рдирдХреНрд░реЛрдирд╛рдЗрдЬрд╝реЗрд╢рди рдЯреВрд▓реНрд╕, рдорд▓реНрдЯреАрдереНрд░реЗрдбреЗрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рдиреНрд╕, рдЬрд╛рд╡рд╛ рд╕рдордХрд╛рд▓реАрдирддрд╛, рдереНрд░реЗрдб рд╕рдордиреНрд╡рдп, рдЬрд╛рд╡рд╛ Runnable, рдереНрд░реЗрдб рдирд┐рд╖реНрдкрд╛рджрди, join vs sleep
рдзреНрдпрд╛рди рджреЗрдВ: рдпрд╣ рд▓реЗрдЦ AI рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред