Π‘ΡΠ΅Π΄ΡΡΠ²Π° Java Π΄Π»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΠΉ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ
ΠΠ΅ΡΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π³ΠΎΠ»ΠΎΠ΄Π°Π½ΠΈΡ Π½Π΅ ΡΡΠΎΠ»Ρ ΠΏΡΡΠΌΠΎΠ»ΠΈΠ½Π΅ΠΉΠ½ΠΎ ΠΊΠ°ΠΊ Π² ΡΠ»ΡΡΠ°Π΅ Ρ Π²Π·Π°ΠΈΠΌΠ½ΠΎΠΉ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΎΠΉ. ΠΡΠ»ΠΈ ΡΠΈΡΡΠ°ΡΠΈΡ ΠΏΠΎΠ΄ΠΎΠ±Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΡ, ΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ Π²ΡΡΠΈΡΠ»ΠΈΡΡ Π½Π΅ ΠΎΠΆΠΈΠ΄Π°ΡΡΠΈΠΉ ΠΏΠΎΡΠΎΠΊ Ρ Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΡΠΌ ΡΠΈΠΊΠ»ΠΎΠΌ Π»ΡΠ±ΠΎΠΉ ΡΡΠΈΠ»ΠΈΡΠΎΠΉ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡΠ΅ΠΉ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² ΠΈ ΠΏΠΎΡΠΎΠΊΠΎΠ² Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅. ΠΠ°Π»Π΅Π΅ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄Π°ΠΌΠΏ ΠΏΠΎΡΠΎΠΊΠΎΠ² ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΌΠ΅ΡΡΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ. ΠΠΎ Π΅ΡΠ»ΠΈ Π² ΡΠ°ΠΊΠΎΠΉ ΡΠΈΡΡΠ°ΡΠΈΠΈ Π²Π½ΡΡΡΠΈ ΡΠΈΠΊΠ»Π° ΠΏΠΎΡΠΎΠΊ Π±ΡΠ΄Π΅Ρ… Π§ΠΈΡΠ°ΡΡ Π΅ΡΡ >
Π‘ΡΠ΅Π΄ΡΡΠ²Π° Java Π΄Π»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΠΉ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ (ΡΠ΅ΡΠ΅ΡΠ°Ρ, ΠΊΡΡΡΠΎΠ²Π°Ρ, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½Π°Ρ)
ΠΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°ΡΠΈ Π’Π΅ΠΌΠ° ΠΊΡΡΡΠΎΠ²ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ: «Π‘ΡΠ΅Π΄ΡΡΠ²Π° Java Π΄Π»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΠΉ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ».
Π¦Π΅Π»Ρ ΡΠ°Π±ΠΎΡΡ: ΠΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡΠ΅Π΄ΡΡΠ²Π° ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΠΉ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ ΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ ΠΈ ΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ Π·Π°ΠΌΠ΅Ρ ΡΠΊΠΎΡΠΎΡΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ Π΄Π»Ρ ΡΠ°Π·Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΠΏΠΎΡΠΎΠΊΠΎΠ². ΠΠ»Ρ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ:
Π€ΡΠ½ΠΊΡΠΈΡ ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΠΎΡΠΎΠΊΠΎΠ²: Π»ΡΠ±ΠΎΠ΅;
ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ²: Π΄Π²Π° (x, y);
Π‘ΠΎΠ·Π΄Π°ΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π²Π²ΠΎΠ΄Π° ΠΈ Π²ΡΠ²ΠΎΠ΄Π° ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°;
ΠΠ»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π΄Π°Π½Π½ΠΎΠΉ Π·Π°Π΄Π°ΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΏΠ»Π°Π½ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ:
1. ΠΡΠΎΠ²Π΅Π΄Π΅ΠΌ ΠΎΠ±Π·ΠΎΡ ΡΡΠ΅Π΄ΡΡΠ² ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΡΡΠΈ Π² ΡΠ·ΡΠΊΠ΅ Java/.
2. ΠΠΎΡΡΡΠΎΠΈΠΌ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
3. ΠΠ°ΠΏΠΈΡΠ΅ΠΌ ΠΏΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ ΡΠ°ΠΌ ΡΠ΅ΠΊΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
4. ΠΠ° ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ² ΠΏΡΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡΡΠ΅ΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ.
5. ΠΠ°ΠΏΠΈΡΠ΅ΠΌ Π²ΡΠ²ΠΎΠ΄ ΠΎ ΠΏΡΠΎΠ΄Π΅Π»Π°Π½Π½ΠΎΠΉ ΡΠ°Π±ΠΎΡΠ΅.
ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅
ΠΠ°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΎΡΠ΅Π²ΠΈΠ΄Π½Π°Ρ ΠΎΠ±Π»Π°ΡΡΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΡΡΠΈ — ΡΡΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ². ΠΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΡΡΡ Π½Π΅Π·Π°ΠΌΠ΅Π½ΠΈΠΌΠ° ΡΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ, ΡΡΠΎΠ±Ρ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π» ΠΎΡΠ·ΡΠ²Π°ΡΡΡΡ Π½Π° Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠΎΡΠΎΠΊ, ΠΎΡΠ²Π΅ΡΠ°ΡΡΠΈΠΉ Π·Π° ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ, ΠΌΠΎΠΆΠ΅Ρ ΠΆΠ΄Π°ΡΡ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊΠ°, Π·Π°Π³ΡΡΠΆΠ°ΡΡΠ΅Π³ΠΎ ΡΠ°ΠΉΠ» ΠΈΠ· ΠΈΠ½ΡΠ΅ΡΠ½Π΅ΡΠ°, ΠΈ Π² ΡΡΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ Π°Π½ΠΈΠΌΠ°ΡΠΈΡ ΠΈΠ»ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡ ΠΏΡΠΎΠ³ΡΠ΅ΡΡ-Π±Π°Ρ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΏΠΎΡΠΎΠΊ Π·Π°Π³ΡΡΠΆΠ°ΡΡΠΈΠΉ ΡΠ°ΠΉΠ», Π΅ΡΠ»ΠΈ Π±ΡΠ»Π° Π½Π°ΠΆΠ°ΡΠ° ΠΊΠ½ΠΎΠΏΠΊΠ° «ΠΎΡΠΌΠ΅Π½Π°».
ΠΡΠ΅ ΠΎΠ΄Π½Π° ΠΏΠΎΠΏΡΠ»ΡΡΠ½Π°Ρ ΠΈ, ΠΏΠΎΠΆΠ°Π»ΡΠΉ, ΠΎΠ΄Π½Π° ΠΈΠ· ΡΠ°ΠΌΡΡ Π²ΠΎΡΡΡΠ΅Π±ΠΎΠ²Π°Π½Π½ΡΡ ΠΎΠ±Π»Π°ΡΡΠ΅ΠΉ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΡΡΠΈ — ΠΈΠ³ΡΡ. Π ΠΈΠ³ΡΠ°Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΏΠΎΡΠΎΠΊΠΈ ΠΌΠΎΠ³ΡΡ ΠΎΡΠ²Π΅ΡΠ°ΡΡ Π·Π° ΡΠ°Π±ΠΎΡΡ Ρ ΡΠ΅ΡΡΡ, Π°Π½ΠΈΠΌΠ°ΡΠΈΡ, ΡΠ°ΡΡΠ΅Ρ ΡΠΈΠ·ΠΈΠΊΠΈ ΠΈ Ρ. ΠΏ. ΠΠ»Ρ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ ΠΏΡΠΈΠ²Π΅Π΄Π΅ΠΌ Π΄Π°Π»Π΅Π΅ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΏΠΎΠ½ΡΡΠΈΡ ΠΈ ΠΏΡΠΈΠΌΠ΅ΡΡ.
1. Π’Π΅ΠΎΡΠ΅ΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΠ°ΡΡΡ (ΠΎΠ±Π·ΠΎΡ ΡΡΠ΅Π΄ΡΡΠ² ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΡΡΠΈ Π² Java).
1.1 ΠΡΠΎΡΠ΅ΡΡΡ ΠΡΠΎΡΠ΅ΡΡ — ΡΡΠΎ ΡΠΎΠ²ΠΎΠΊΡΠΏΠ½ΠΎΡΡΡ ΠΊΠΎΠ΄Π° ΠΈ Π΄Π°Π½Π½ΡΡ , ΡΠ°Π·Π΄Π΅Π»ΡΡΡΠΈΡ ΠΎΠ±ΡΠ΅Π΅ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠ΅ Π°Π΄ΡΠ΅ΡΠ½ΠΎΠ΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ. Π§Π°ΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΎΠ΄Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ°, Π½ΠΎ Π±ΡΠ²Π°ΡΡ ΠΈ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π±ΡΠ°ΡΠ·Π΅Ρ Chrome ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π²ΠΊΠ»Π°Π΄ΠΊΠΈ, ΡΡΠΎ Π΄Π°Π΅Ρ Π΅ΠΌΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π°, Π²ΡΠΎΠ΄Π΅ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π²ΠΊΠ»Π°Π΄ΠΎΠΊ Π΄ΡΡΠ³ ΠΎΡ Π΄ΡΡΠ³Π°). ΠΡΠΎΡΠ΅ΡΡΡ ΠΈΠ·ΠΎΠ»ΠΈΡΠΎΠ²Π°Π½Ρ Π΄ΡΡΠ³ ΠΎΡ Π΄ΡΡΠ³Π°, ΠΏΠΎΡΡΠΎΠΌΡ ΠΏΡΡΠΌΠΎΠΉ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΏΠ°ΠΌΡΡΠΈ ΡΡΠΆΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ° Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ (Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌΠΈ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ ΡΡΠ΅Π΄ΡΡΠ²).
ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΠ‘ ΡΠΎΠ·Π΄Π°Π΅Ρ ΡΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΠΎΠ΅ «Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠ΅ Π°Π΄ΡΠ΅ΡΠ½ΠΎΠ΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ», ΠΊ ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΠΏΡΠΎΡΠ΅ΡΡ ΠΈΠΌΠ΅Π΅Ρ ΠΏΡΡΠΌΠΎΠΉ Π΄ΠΎΡΡΡΠΏ. ΠΡΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΡ, ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ Π΅Π³ΠΎ Π΄Π°Π½Π½ΡΠ΅ ΠΈ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² ΠΏΠΎΠ»Π½ΠΎΠΌ Π΅Π³ΠΎ ΡΠ°ΡΠΏΠΎΡΡΠΆΠ΅Π½ΠΈΠΈ. ΠΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° ΠΆΠ΅ ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ Π·Π° ΡΠΎ, ΠΊΠ°ΠΊ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠ΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΏΡΠΎΠ΅ΡΠΈΡΡΠ΅ΡΡΡ Π½Π° ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΡΡ ΠΏΠ°ΠΌΡΡΡ.
Π‘Ρ Π΅ΠΌΠ° ΡΡΠΎΠ³ΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π° Π½Π° ΡΠΈΡ. 1. ΠΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° ΠΎΠΏΠ΅ΡΠΈΡΡΠ΅Ρ ΡΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΠΌΠΈ ΡΡΡΠ°Π½ΠΈΡΠ°ΠΌΠΈ ΠΏΠ°ΠΌΡΡΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΡΠΎΠ±ΠΎΠΉ ΠΏΡΠΎΡΡΠΎ ΠΎΠ±Π»Π°ΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ°. ΠΡΠ»ΠΈ ΠΏΡΠΎΡΠ΅ΡΡΡ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΠ°ΠΌΡΡΠΈ, ΡΠΈΡΡΠ΅ΠΌΠ° Π²ΡΠ΄Π΅Π»ΡΠ΅Ρ Π΅ΠΌΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΡΡΠ°Π½ΠΈΡΡ ΠΈΠ· ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ. Π‘ΡΡΠ°Π½ΠΈΡΡ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ ΠΌΠΎΠ³ΡΡ ΠΏΡΠΎΠ΅ΡΠΈΡΠΎΠ²Π°ΡΡΡΡ Π½Π° ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΡΡ ΠΏΠ°ΠΌΡΡΡ Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅.
Π ΠΈΡ. 1.
ΠΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΏΡΠΎΡΠ΅ΡΡ, Π·Π°Π³ΡΡΠΆΠ°Ρ Π² Π΅Π³ΠΎ Π°Π΄ΡΠ΅ΡΠ½ΠΎΠ΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΠΊΠΎΠ΄ ΠΈ Π΄Π°Π½Π½ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π° Π·Π°ΡΠ΅ΠΌ Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ Π³Π»Π°Π²Π½ΡΠΉ ΠΏΠΎΡΠΎΠΊ ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ°.
1.2 ΠΠΎΡΠΎΠΊΠΈ ΠΠ΄ΠΈΠ½ ΠΏΠΎΡΠΎΠΊ — ΡΡΠΎ ΠΎΠ΄Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡΠ° ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π°. ΠΠ°ΠΆΠ΄ΡΠΉ ΠΏΠΎΡΠΎΠΊ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠ°, ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΠΎΠ½ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ, ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ°.
Π‘Π»Π΅Π΄ΡΠ΅Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ ΠΎΠ±Π³ΠΎΠ²ΠΎΡΠΈΡΡ ΡΡΠ°Π·Ρ «ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ». ΠΠ·Π²Π΅ΡΡΠ½ΠΎ, ΡΡΠΎ Π½Π° ΠΎΠ΄Π½ΠΎ ΡΠ΄ΡΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°, Π² ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡΡΡ ΠΎΠ΄Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡΠ° ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. Π’ΠΎ Π΅ΡΡΡ ΠΎΠ΄Π½ΠΎΡΠ΄Π΅ΡΠ½ΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ ΠΌΠΎΠΆΠ΅Ρ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΉ Π·Π° ΡΠ°Π· (Π² ΡΠΏΡΠΎΡΠ΅Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅). ΠΠ΄Π½Π°ΠΊΠΎ Π·Π°ΠΏΡΡΠΊ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΡ ΠΏΠΎΡΠΎΠΊΠΎΠ² Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ ΠΈ Π² ΡΠΈΡΡΠ΅ΠΌΠ°Ρ Ρ ΠΎΠ΄Π½ΠΎΡΠ΄Π΅ΡΠ½ΡΠΌΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°ΠΌΠΈ. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠΈΡΡΠ΅ΠΌΠ° Π±ΡΠ΄Π΅Ρ ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ΅ΡΠΊΠΈ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°ΡΡΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ, ΠΏΠΎΠΎΡΠ΅ΡΠ΅Π΄Π½ΠΎ Π΄Π°Π²Π°Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΡΠΎ ΠΎΠ΄Π½ΠΎΠΌΡ, ΡΠΎ Π΄ΡΡΠ³ΠΎΠΌΡ ΠΏΠΎΡΠΎΠΊΡ. Π’Π°ΠΊΠ°Ρ ΡΡ Π΅ΠΌΠ° Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΏΡΠ΅Π²Π΄ΠΎ-ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠΎΠΌ. Π‘ΠΈΡΡΠ΅ΠΌΠ° Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ (ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ) ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊΠ°, ΠΏΠ΅ΡΠ΅Π΄ ΡΠ΅ΠΌ ΠΊΠ°ΠΊ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠΈΡΡΡΡ Π½Π° Π΄ΡΡΠ³ΠΎΠΉ ΠΏΠΎΡΠΎΠΊ, ΠΈ Π²ΠΎΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ Π΅Π³ΠΎ ΠΏΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΊ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΠΎΡΠΎΠΊΠ°.
Π ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ ΠΏΠΎΡΠΎΠΊΠ° Π²Ρ ΠΎΠ΄ΡΡ ΡΠ°ΠΊΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ, ΠΊΠ°ΠΊ ΡΡΠ΅ΠΊ, Π½Π°Π±ΠΎΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΡΠ΅Π³ΠΈΡΡΡΠΎΠ² ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°, Π°Π΄ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΈ Ρ. Π΄.
ΠΡΠΎΡΠ΅ Π³ΠΎΠ²ΠΎΡΡ, ΠΏΡΠΈ ΠΏΡΠ΅Π²Π΄ΠΎΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎΠΌ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΏΠΎΡΠΎΠΊΠΎΠ² ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ ΠΌΠ΅ΡΠ΅ΡΡΡ ΠΌΠ΅ΠΆΠ΄Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ², Π²ΡΠΏΠΎΠ»Π½ΡΡ ΠΏΠΎ ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ ΡΠ°ΡΡΡ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· Π½ΠΈΡ (ΡΠΈΡ.2).
Π ΠΈΡ. 2.
Π¦Π²Π΅ΡΠ½ΡΠ΅ ΠΊΠ²Π°Π΄ΡΠ°ΡΡ Π½Π° ΡΠΈΡΡΠ½ΠΊΠ΅ — ΡΡΠΎ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° (Π·Π΅Π»Π΅Π½ΡΠ΅ — ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊΠ°, ΡΠΈΠ½ΠΈΠ΅ — ΠΏΠΎΠ±ΠΎΡΠ½ΠΎΠ³ΠΎ). ΠΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΈΠ΄Π΅Ρ ΡΠ»Π΅Π²Π° Π½Π°ΠΏΡΠ°Π²ΠΎ. ΠΠΎΡΠ»Π΅ Π·Π°ΠΏΡΡΠΊΠ° ΠΏΠΎΠ±ΠΎΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊΠ° Π΅Π³ΠΎ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π½Π°ΡΠΈΠ½Π°ΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π²ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠΊΡ Ρ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡΠΌΠΈ Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊΠ°. ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ Π·Π° ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ Π½Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ.
Π’ΠΎ, ΡΡΠΎ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΡ ΠΏΠΎΡΠΎΠΊΠΎΠ² Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π²ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠΊΡ, Π² Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ»ΡΡΠ°ΡΡ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠ°ΠΌ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ Π΄Π°Π½Π½ΡΠΌ. ΠΡΠΎΠ±Π»Π΅ΠΌΠ°ΠΌ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ² Π±ΡΠ΄Π΅Ρ ΠΏΠΎΡΠ²ΡΡΠ΅Π½Π° ΡΠ»Π΅Π΄ΡΡΡΠ°Ρ ΡΡΠ°ΡΡΡ, Π° ΠΏΠΎΠΊΠ° ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ Π·Π°ΠΏΡΡΠΊΠ°ΡΡΡΡ ΠΏΠΎΡΠΎΠΊΠΈ Π² Java.
1.3 ΠΠ°ΠΏΡΡΠΊ ΠΏΠΎΡΠΎΠΊΠΎΠ² ΠΠ°ΠΆΠ΄ΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡ ΠΈΠΌΠ΅Π΅Ρ Ρ ΠΎΡΡ Π±Ρ ΠΎΠ΄ΠΈΠ½ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠΈΠΉΡΡ ΠΏΠΎΡΠΎΠΊ. Π’ΠΎΡ ΠΏΠΎΡΠΎΠΊ, Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ Π³Π»Π°Π²Π½ΡΠΌ. Π ΡΠ·ΡΠΊΠ΅ Java, ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠ°, Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊΠ° Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ ΠΌΠ΅ΡΠΎΠ΄Π° main (). ΠΠ°ΡΠ΅ΠΌ, ΠΏΠΎ ΠΌΠ΅ΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ, Π² Π·Π°Π΄Π°Π½Π½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠΌ ΠΌΠ΅ΡΡΠ°Ρ , ΠΈ ΠΏΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Π·Π°Π΄Π°Π½Π½ΡΡ ΠΈΠΌ ΠΆΠ΅ ΡΡΠ»ΠΎΠ²ΠΈΠΉ, Π·Π°ΠΏΡΡΠΊΠ°ΡΡΡΡ Π΄ΡΡΠ³ΠΈΠ΅, ΠΏΠΎΠ±ΠΎΡΠ½ΡΠ΅ ΠΏΠΎΡΠΎΠΊΠΈ.
Π ΡΠ·ΡΠΊΠ΅ Java ΠΏΠΎΡΠΎΠΊ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ Π² Π²ΠΈΠ΄Π΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ°-ΠΏΠΎΡΠΎΠΌΠΊΠ° ΠΊΠ»Π°ΡΡΠ° Thread. ΠΡΠΎΡ ΠΊΠ»Π°ΡΡ ΠΈΠ½ΠΊΠ°ΠΏΡΡΠ»ΠΈΡΡΠ΅Ρ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΡ ΡΠ°Π±ΠΎΡΡ Ρ ΠΏΠΎΡΠΎΠΊΠΎΠΌ.
ΠΠ°ΠΏΡΡΡΠΈΡΡ Π½ΠΎΠ²ΡΠΉ ΠΏΠΎΡΠΎΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π²ΡΠΌΡ ΡΠΏΠΎΡΠΎΠ±Π°ΠΌΠΈ:
Π‘ΠΏΠΎΡΠΎΠ± 1.
Π‘ΠΎΠ·Π΄Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΊΠ»Π°ΡΡΠ° Thread, ΠΏΠ΅ΡΠ΅Π΄Π°Π² Π΅ΠΌΡ Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ΅ Π½Π΅ΡΡΠΎ, ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΠ΅Π΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Runnable. ΠΡΠΎΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ run (), ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π² Π½ΠΎΠ²ΠΎΠΌ ΠΏΠΎΡΠΎΠΊΠ΅. ΠΠΎΡΠΎΠΊ Π·Π°ΠΊΠΎΠ½ΡΠΈΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅, ΠΊΠΎΠ³Π΄Π° Π·Π°Π²Π΅ΡΡΠΈΡΡΡ Π΅Π³ΠΎ ΠΌΠ΅ΡΠΎΠ΄ run ().
ΠΡΠ³Π»ΡΠ΄ΠΈΡ ΡΡΠΎ ΡΠ°ΠΊ (ΠΡΠΈΠΌΠ΅Ρ 1.):
class SomeThing //ΠΠ΅ΡΡΠΎ, ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΠ΅Π΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Runnable.
implements Runnable //(ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ΅Π΅ ΠΌΠ΅ΡΠΎΠ΄ run ()).
{.
public void run () //ΠΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π² ΠΏΠΎΠ±ΠΎΡΠ½ΠΎΠΌ ΠΏΠΎΡΠΎΠΊΠ΅.
{.
System.out.println («ΠΡΠΈΠ²Π΅Ρ ΠΈΠ· ΠΏΠΎΠ±ΠΎΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊΠ°!»);
}.
}.
public class Program //ΠΠ»Π°ΡΡ Ρ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ main ().
{.
static SomeThing mThing; //mThing — ΠΎΠ±ΡΠ΅ΠΊΡ ΠΊΠ»Π°ΡΡΠ°, ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΠ΅Π³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Runnable.
public static void main (String[] args).
{.
mThing = new SomeThing ();
Thread myThready = new Thread (mThing); //Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠ° «myThready» .
myThready.start (); //ΠΠ°ΠΏΡΡΠΊ ΠΏΠΎΡΠΎΠΊΠ°.
System.out.println («ΠΠ»Π°Π²Π½ΡΠΉ ΠΏΠΎΡΠΎΠΊ Π·Π°Π²Π΅ΡΡΡΠ½…»);
}.
}.
ΠΠ»Ρ ΠΏΡΡΠ΅Π³ΠΎ ΡΠΊΠΎΡΠΎΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ΄Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΊΠ»Π°ΡΡΠ° Thread ΠΎΠ±ΡΠ΅ΠΊΡ Π±Π΅Π·ΡΠΌΡΠ½Π½ΠΎΠ³ΠΎ Π²Π½ΡΡΡΠ΅Π½Π½Π΅Π³ΠΎ ΠΊΠ»Π°ΡΡΠ°, ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΠ΅Π³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Runnable:
ΠΡΠΈΠΌΠ΅Ρ 2.
public class Program //ΠΠ»Π°ΡΡ Ρ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ main ().
{.
public static void main (String[] args).
{.
//Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠ°.
Thread myThready = new Thread (new Runnable ().
{.
public void run () //ΠΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π² ΠΏΠΎΠ±ΠΎΡΠ½ΠΎΠΌ ΠΏΠΎΡΠΎΠΊΠ΅.
{.
System.out.println («ΠΡΠΈΠ²Π΅Ρ ΠΈΠ· ΠΏΠΎΠ±ΠΎΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊΠ°!»);
}.
});
myThready.start (); //ΠΠ°ΠΏΡΡΠΊ ΠΏΠΎΡΠΎΠΊΠ°.
System.out.println («ΠΠ»Π°Π²Π½ΡΠΉ ΠΏΠΎΡΠΎΠΊ Π·Π°Π²Π΅ΡΡΡΠ½…»);
}.
}.
Π‘ΠΏΠΎΡΠΎΠ± 2 (ΠΡΠΈΠΌΠ΅Ρ3.).
Π‘ΠΎΠ·Π΄Π°ΡΡ ΠΏΠΎΡΠΎΠΌΠΊΠ° ΠΊΠ»Π°ΡΡΠ° Thread ΠΈ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π΅Π³ΠΎ ΠΌΠ΅ΡΠΎΠ΄ run ():
class AffableThread extends Thread.
{.
@Override.
public void run () //ΠΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ Π² ΠΏΠΎΠ±ΠΎΡΠ½ΠΎΠΌ ΠΏΠΎΡΠΎΠΊΠ΅.
{.
System.out.println («ΠΡΠΈΠ²Π΅Ρ ΠΈΠ· ΠΏΠΎΠ±ΠΎΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊΠ°!»);
}.
}.
public class Program.
{.
static AffableThread mSecondThread;
public static void main (String[] args).
{.
mSecondThread = new AffableThread (); //Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠ°.
mSecondThread.start (); //ΠΠ°ΠΏΡΡΠΊ ΠΏΠΎΡΠΎΠΊΠ°.
System.out.println («ΠΠ»Π°Π²Π½ΡΠΉ ΠΏΠΎΡΠΎΠΊ Π·Π°Π²Π΅ΡΡΡΠ½…»);
}.
}.
Π ΠΏΡΠΈΠ²Π΅Π΄ΡΠ½Π½ΠΎΠΌ Π²ΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π² ΠΌΠ΅ΡΠΎΠ΄Π΅ main () ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΠΈ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΡΠΎΠΊ. ΠΠ°ΠΆΠ½ΠΎ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ ΠΏΠΎΡΠ»Π΅ Π²ΡΠ·ΠΎΠ²Π° ΠΌΠ΅ΡΠΎΠ΄Π° mSecondThread. start () Π³Π»Π°Π²Π½ΡΠΉ ΠΏΠΎΡΠΎΠΊ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ ΡΠ²ΠΎΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅, Π½Π΅ Π΄ΠΎΠΆΠΈΠ΄Π°ΡΡΡ ΠΏΠΎΠΊΠ° ΠΏΠΎΡΠΎΠΆΠ΄Π΅Π½Π½ΡΠΉ ΠΈΠΌ ΠΏΠΎΡΠΎΠΊ Π·Π°Π²Π΅ΡΡΠΈΡΡΡ. Π ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ΄ΡΡ ΠΏΠΎΡΠ»Π΅ Π²ΡΠ·ΠΎΠ²Π° ΠΌΠ΅ΡΠΎΠ΄Π° start (), Π±ΡΠ΄ΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½Ρ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎ Ρ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡΠΌΠΈ ΠΏΠΎΡΠΎΠΊΠ° mSecondThread.
ΠΠ»Ρ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΠΈ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ ΠΏΠΎΡΠΎΠΊΠΎΠ² ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ Π΄Π²Π° ΠΏΠΎΡΠΎΠΊΠ° ΡΠΏΠΎΡΡΡ Π½Π° ΠΏΡΠ΅Π΄ΠΌΠ΅Ρ ΡΠΈΠ»ΠΎΡΠΎΡΡΠΊΠΎΠ³ΠΎ Π²ΠΎΠΏΡΠΎΡΠ° «ΡΡΠΎ Π±ΡΠ»ΠΎ ΡΠ°Π½ΡΡΠ΅, ΡΠΉΡΠΎ ΠΈΠ»ΠΈ ΠΊΡΡΠΈΡΠ°?». ΠΠ»Π°Π²Π½ΡΠΉ ΠΏΠΎΡΠΎΠΊ ΡΠ²Π΅ΡΠ΅Π½, ΡΡΠΎ ΠΏΠ΅ΡΠ²ΠΎΠΉ Π±ΡΠ»Π° ΠΊΡΡΠΈΡΠ°, ΠΎ ΡΠ΅ΠΌ ΠΎΠ½ ΠΈ Π±ΡΠ΄Π΅Ρ ΡΠΎΠΎΠ±ΡΠ°ΡΡ ΠΊΠ°ΠΆΠ΄ΡΡ ΡΠ΅ΠΊΡΠ½Π΄Ρ. ΠΡΠΎΡΠΎΠΉ ΠΆΠ΅ ΠΏΠΎΡΠΎΠΊ ΡΠ°Π· Π² ΡΠ΅ΠΊΡΠ½Π΄Ρ Π±ΡΠ΄Π΅Ρ ΠΎΠΏΡΠΎΠ²Π΅ΡΠ³Π°ΡΡ ΡΠ²ΠΎΠ΅Π³ΠΎ ΠΎΠΏΠΏΠΎΠ½Π΅Π½ΡΠ°. ΠΡΠ΅Π³ΠΎ ΡΠΏΠΎΡ ΠΏΡΠΎΠ΄Π»ΠΈΡΡΡ 5 ΡΠ΅ΠΊΡΠ½Π΄. ΠΠΎΠ±Π΅Π΄ΠΈΡ ΡΠΎΡ ΠΏΠΎΡΠΎΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΌ ΠΈΠ·ΡΠ΅ΡΠ΅Ρ ΡΠ²ΠΎΠΉ ΠΎΡΠ²Π΅Ρ Π½Π° ΡΡΠΎΡ, Π±Π΅Π· ΡΠΎΠΌΠ½Π΅Π½ΠΈΡ, ΠΆΠΈΠ²ΠΎΡΡΠ΅ΠΏΠ΅ΡΡΡΠΈΠΉ ΡΠΈΠ»ΠΎΡΠΎΡΡΠΊΠΈΠΉ Π²ΠΎΠΏΡΠΎΡ. Π ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΡΡΠ΅Π΄ΡΡΠ²Π°, (isAlive () sleep () ΠΈ join ()). Π Π½ΠΈΠΌ Π΄Π°Π½Ρ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ, Π° Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΎΠ½ΠΈ Π±ΡΠ΄ΡΡ ΡΠ°Π·ΠΎΠ±ΡΠ°Π½Ρ Π΄Π°Π»ΡΡΠ΅.
ΠΡΠΈΠΌΠ΅Ρ 4.
class EggVoice extends Thread.
{.
@Override.
public void run ().
{.
for (int i = 0; i < 5; i++).
{.
try{.
sleep (1000); //ΠΡΠΈΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΠΏΠΎΡΠΎΠΊ Π½Π° 1 ΡΠ΅ΠΊΡΠ½Π΄Ρ.
}catch (InterruptedException e){}.
System.out.println («ΡΠΉΡΠΎ!»);
}.
//Π‘Π»ΠΎΠ²ΠΎ «ΡΠΉΡΠΎ» ΡΠΊΠ°Π·Π°Π½ΠΎ 5 ΡΠ°Π·.
}.
}.
public class ChickenVoice //ΠΠ»Π°ΡΡ Ρ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ main ().
{.
static EggVoice mAnotherOpinion; //ΠΠΎΠ±ΠΎΡΠ½ΡΠΉ ΠΏΠΎΡΠΎΠΊ.
public static void main (String[] args).
{.
mAnotherOpinion = new EggVoice (); //Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠ°.
System.out.println («Π‘ΠΏΠΎΡ Π½Π°ΡΠ°Ρ…»);
mAnotherOpinion.start (); //ΠΠ°ΠΏΡΡΠΊ ΠΏΠΎΡΠΎΠΊΠ°.
for (int i = 0; i < 5; i++).
{.
try{.
Thread.sleep (1000); //ΠΡΠΈΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΠΏΠΎΡΠΎΠΊ Π½Π° 1 ΡΠ΅ΠΊΡΠ½Π΄Ρ.
}catch (InterruptedException e){}.
System.out.println («ΠΊΡΡΠΈΡΠ°!»);
}.
//Π‘Π»ΠΎΠ²ΠΎ «ΠΊΡΡΠΈΡΠ°» ΡΠΊΠ°Π·Π°Π½ΠΎ 5 ΡΠ°Π·.
if (mAnotherOpinion.isAlive ()) //ΠΡΠ»ΠΈ ΠΎΠΏΠΏΠΎΠ½Π΅Π½Ρ Π΅ΡΠ΅ Π½Π΅ ΡΠΊΠ°Π·Π°Π» ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ ΡΠ»ΠΎΠ²ΠΎ.
{.
try{.
mAnotherOpinion.join ();//ΠΠΎΠ΄ΠΎΠΆΠ΄Π°ΡΡ ΠΏΠΎΠΊΠ° ΠΎΠΏΠΏΠΎΠ½Π΅Π½Ρ Π·Π°ΠΊΠΎΠ½ΡΠΈΡ Π²ΡΡΠΊΠ°Π·ΡΠ²Π°ΡΡΡΡ.
}catch (InterruptedException e){}.
System.out.println («ΠΠ΅ΡΠ²ΡΠΌ ΠΏΠΎΡΠ²ΠΈΠ»ΠΎΡΡ ΡΠΉΡΠΎ!»);
}.
else //Π΅ΡΠ»ΠΈ ΠΎΠΏΠΏΠΎΠ½Π΅Π½Ρ ΡΠΆΠ΅ Π·Π°ΠΊΠΎΠ½ΡΠΈΠ» Π²ΡΡΠΊΠ°Π·ΡΠ²Π°ΡΡΡΡ.
{.
System.out.println («ΠΠ΅ΡΠ²ΠΎΠΉ ΠΏΠΎΡΠ²ΠΈΠ»Π°ΡΡ ΠΊΡΡΠΈΡΠ°!»);
}.
System.out.println («Π‘ΠΏΠΎΡ Π·Π°ΠΊΠΎΠ½ΡΠ΅Π½!»);
}.
}.
ΠΠΎΠ½ΡΠΎΠ»Ρ:
Π‘ΠΏΠΎΡ Π½Π°ΡΠ°Ρ…
ΠΊΡΡΠΈΡΠ°!
ΡΠΉΡΠΎ!
ΡΠΉΡΠΎ!
ΠΊΡΡΠΈΡΠ°!
ΡΠΉΡΠΎ!
ΠΊΡΡΠΈΡΠ°!
ΡΠΉΡΠΎ!
ΠΊΡΡΠΈΡΠ°!
ΡΠΉΡΠΎ!
ΠΊΡΡΠΈΡΠ°!
ΠΠ΅ΡΠ²ΠΎΠΉ ΠΏΠΎΡΠ²ΠΈΠ»Π°ΡΡ ΠΊΡΡΠΈΡΠ°!
Π‘ΠΏΠΎΡ Π·Π°ΠΊΠΎΠ½ΡΠ΅Π½!
Π ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π΄Π²Π° ΠΏΠΎΡΠΎΠΊΠ° ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎ Π² ΡΠ΅ΡΠ΅Π½ΠΈΠΈ 5 ΡΠ΅ΠΊΡΠ½Π΄ Π²ΡΠ²ΠΎΠ΄ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π½Π° ΠΊΠΎΠ½ΡΠΎΠ»Ρ. Π’ΠΎΡΠ½ΠΎ ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·Π°ΡΡ, ΠΊΠ°ΠΊΠΎΠΉ ΠΏΠΎΡΠΎΠΊ Π·Π°ΠΊΠΎΠ½ΡΠΈΡ Π²ΡΡΠΊΠ°Π·ΡΠ²Π°ΡΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΌ, Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ. ΠΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΏΡΡΠ°ΡΡΡΡ, ΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π°ΠΆΠ΅ ΡΠ³Π°Π΄Π°ΡΡ, Π½ΠΎ Π΅ΡΡΡ Π±ΠΎΠ»ΡΡΠ°Ρ Π²Π΅ΡΠΎΡΡΠ½ΠΎΡΡΡ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΡΠ° ΠΆΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΏΡΠΈ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ Π·Π°ΠΏΡΡΠΊΠ΅ Π±ΡΠ΄Π΅Ρ ΠΈΠΌΠ΅ΡΡ Π΄ΡΡΠ³ΠΎΠ³ΠΎ «ΠΏΠΎΠ±Π΅Π΄ΠΈΡΠ΅Π»Ρ». ΠΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΈΠ·-Π·Π° ΡΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ «Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎΠ³ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π°». ΠΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎΡΡΡ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΡΠΎ, ΡΡΠΎ Π½Π΅Π»ΡΠ·Ρ ΡΡΠ²Π΅ΡΠΆΠ΄Π°ΡΡ, ΡΡΠΎ ΠΊΠ°ΠΊΠ°Ρ-Π»ΠΈΠ±ΠΎ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊΠ°, Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡΡ ΡΠ°Π½ΡΡΠ΅ ΠΈΠ»ΠΈ ΠΏΠΎΠ·ΠΆΠ΅ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π΄ΡΡΠ³ΠΎΠ³ΠΎ. ΠΠ»ΠΈ, Π΄ΡΡΠ³ΠΈΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΠ΅ ΠΏΠΎΡΠΎΠΊΠΈ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡ Π΄ΡΡΠ³ ΠΎΡ Π΄ΡΡΠ³Π°, Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠ΅Ρ ΡΠ»ΡΡΠ°Π΅Π², ΠΊΠΎΠ³Π΄Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ ΡΠ°ΠΌ ΠΎΠΏΠΈΡΡΠ²Π°Π΅Ρ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅Π½Π½ΡΡ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΡΡΠ΅Π΄ΡΡΠ² ΡΠ·ΡΠΊΠ°.
1.4 ΠΠ°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΈ Π΄Π΅ΠΌΠΎΠ½Ρ Π Java ΠΏΡΠΎΡΠ΅ΡΡ Π·Π°Π²Π΅ΡΡΠ°Π΅ΡΡΡ ΡΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° Π·Π°Π²Π΅ΡΡΠ°Π΅ΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ Π΅Π³ΠΎ ΠΏΠΎΡΠΎΠΊ. ΠΠ°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΠΌΠ΅ΡΠΎΠ΄ main () ΡΠΆΠ΅ Π·Π°Π²Π΅ΡΡΠΈΠ»ΡΡ, Π½ΠΎ Π΅ΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΠΏΠΎΡΠΎΠΆΠ΄Π΅Π½Π½ΡΠ΅ ΠΈΠΌ ΠΏΠΎΡΠΎΠΊΠΈ, ΡΠΈΡΡΠ΅ΠΌΠ° Π±ΡΠ΄Π΅Ρ ΠΆΠ΄Π°ΡΡ ΠΈΡ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ. ΠΠ΄Π½Π°ΠΊΠΎ ΡΡΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ Π½Π΅ ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΊ ΠΎΡΠΎΠ±ΠΎΠΌΡ Π²ΠΈΠ΄Ρ ΠΏΠΎΡΠΎΠΊΠΎΠ² — Π΄Π΅ΠΌΠΎΠ½Π°ΠΌ. ΠΡΠ»ΠΈ Π·Π°Π²Π΅ΡΡΠΈΠ»ΡΡ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΠΎΠ±ΡΡΠ½ΡΠΉ ΠΏΠΎΡΠΎΠΊ ΠΏΡΠΎΡΠ΅ΡΡΠ°, ΠΈ ΠΎΡΡΠ°Π»ΠΈΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠΎΠΊΠΈ-Π΄Π΅ΠΌΠΎΠ½Ρ, ΡΠΎ ΠΎΠ½ΠΈ Π±ΡΠ΄ΡΡ ΠΏΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π·Π°Π²Π΅ΡΡΠ΅Π½Ρ ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠ° Π·Π°ΠΊΠΎΠ½ΡΠΈΡΡΡ. Π§Π°ΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΏΠΎΡΠΎΠΊΠΈ-Π΄Π΅ΠΌΠΎΠ½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠΎΠ½ΠΎΠ²ΡΡ Π·Π°Π΄Π°Ρ, ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°ΡΡΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡ Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π΅Π³ΠΎ ΠΆΠΈΠ·Π½ΠΈ.
ΠΠ±ΡΡΠ²ΠΈΡΡ ΠΏΠΎΡΠΎΠΊ Π΄Π΅ΠΌΠΎΠ½ΠΎΠΌ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ — Π½ΡΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄ Π·Π°ΠΏΡΡΠΊΠΎΠΌ ΠΏΠΎΡΠΎΠΊΠ° Π²ΡΠ·Π²Π°ΡΡ Π΅Π³ΠΎ ΠΌΠ΅ΡΠΎΠ΄ setDaemon (true);
ΠΡΠΎΠ²Π΅ΡΠΈΡΡ, ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΈ ΠΏΠΎΡΠΎΠΊ Π΄Π΅ΠΌΠΎΠ½ΠΎΠΌ, ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ·Π²Π°Π² Π΅Π³ΠΎ ΠΌΠ΅ΡΠΎΠ΄ boolean isDaemon ();
1.5 ΠΠ°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠΎΠ² Π Java ΡΡΡΠ΅ΡΡΠ²ΡΡΡ (ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π»ΠΈ) ΡΡΠ΅Π΄ΡΡΠ²Π° Π΄Π»Ρ ΠΏΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΠΏΠΎΡΠΎΠΊΠ°. Π ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ ΠΌΠ΅ΡΠΎΠ΄ Thread. stop () Π·Π°Π²Π΅ΡΡΠ°Π΅Ρ ΠΏΠΎΡΠΎΠΊ Π½Π΅Π·Π°ΠΌΠ΅Π΄Π»ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠΎΡΠ»Π΅ ΡΠ²ΠΎΠ΅Π³ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. ΠΠ΄Π½Π°ΠΊΠΎ ΡΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄, Π° ΡΠ°ΠΊΠΆΠ΅ Thread. suspend (), ΠΏΡΠΈΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡΠΈΠΉ ΠΏΠΎΡΠΎΠΊ, ΠΈ Thread. resume (), ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡΡΠΈΠΉ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠ°, Π±ΡΠ»ΠΈ ΠΎΠ±ΡΡΠ²Π»Π΅Π½Ρ ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΠΌΠΈ ΠΈ ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΡΠ½ΡΠ½Π΅ ΠΊΡΠ°ΠΉΠ½Π΅ Π½Π΅ΠΆΠ΅Π»Π°ΡΠ΅Π»ΡΠ½ΠΎ. ΠΠ΅Π»ΠΎ Π² ΡΠΎΠΌ ΡΡΠΎ ΠΏΠΎΡΠΎΠΊ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ «ΡΠ±ΠΈΡ» Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, ΠΎΠ±ΡΡΠ² ΠΊΠΎΡΠΎΡΠΎΠΉ Π½Π° ΠΏΠΎΠ»ΡΡΠ»ΠΎΠ²Π΅ ΠΎΡΡΠ°Π²ΠΈΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Π² Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ, ΡΡΠΎ ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΠΊ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ ΡΡΡΠ΄Π½ΠΎ ΠΎΡΠ»Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌΠΎΠΉ ΠΈ ΡΠ»ΡΡΠ°ΠΉΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡΠ΅ΠΉ ΠΎΡΠΈΠ±ΠΊΠ΅.
ΠΠΌΠ΅ΡΡΠΎ ΠΏΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΠΏΠΎΡΠΎΠΊΠ° ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΡΡ Π΅ΠΌΠ°, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΏΠΎΡΠΎΠΊ ΡΠ°ΠΌ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π΅Π½ Π·Π° ΡΠ²ΠΎΡ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅.
ΠΠΎΡΠΎΠΊ ΠΌΠΎΠΆΠ΅Ρ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡΡ Π»ΠΈΠ±ΠΎ ΡΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ Π·Π°ΠΊΠΎΠ½ΡΠΈΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Π° run (), (main () — Π΄Π»Ρ Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊΠ°) Π»ΠΈΠ±ΠΎ ΠΏΠΎ ΡΠΈΠ³Π½Π°Π»Ρ ΠΈΠ· Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊΠ°. ΠΡΠΈΡΠ΅ΠΌ ΠΊΠ°ΠΊ ΡΠ΅Π°Π³ΠΈΡΠΎΠ²Π°ΡΡ Π½Π° ΡΠ°ΠΊΠΎΠΉ ΡΠΈΠ³Π½Π°Π» — Π΄Π΅Π»ΠΎ, ΠΎΠΏΡΡΡ ΠΆΠ΅, ΡΠ°ΠΌΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊΠ°. ΠΠΎΠ»ΡΡΠΈΠ² Π΅Π³ΠΎ, ΠΏΠΎΡΠΎΠΊ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΈ Π·Π°Π²Π΅ΡΡΠΈΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅, Π° ΠΌΠΎΠΆΠ΅Ρ ΠΈ Π²ΠΎΠ²ΡΠ΅ Π΅Π³ΠΎ ΠΏΡΠΎΠΈΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ. ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠ΅Π°ΠΊΡΠΈΠΈ Π½Π° ΡΠΈΠ³Π½Π°Π» Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΠΏΠΎΡΠΎΠΊΠ° Π»Π΅ΠΆΠΈΡ Π½Π° ΠΏΠ»Π΅ΡΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ°.
Java ΠΈΠΌΠ΅Π΅Ρ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΉ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΠΎΠΏΠΎΠ²Π΅ΡΠ΅Π½ΠΈΡ ΠΏΠΎΡΠΎΠΊΠ°, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ Interruption (ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΠ΅, Π²ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΡΡΠ²ΠΎ), ΠΈ ΡΠΊΠΎΡΠΎ ΠΌΡ Π΅Π³ΠΎ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ, Π½ΠΎ ΡΠ½Π°ΡΠ°Π»Π° ΠΏΠΎΡΠΌΠΎΡΡΠΈΡΠ΅ Π½Π° ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΊΡ:
ΠΡΠΈΠΌΠ΅Ρ 5.
Incremenator — ΠΏΠΎΡΠΎΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΊΠ°ΠΆΠ΄ΡΡ ΡΠ΅ΠΊΡΠ½Π΄Ρ ΠΏΡΠΈΠ±Π°Π²Π»ΡΠ΅Ρ ΠΈΠ»ΠΈ Π²ΡΡΠΈΡΠ°Π΅Ρ Π΅Π΄ΠΈΠ½ΠΈΡΡ ΠΈΠ· Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Program.mValue. Incremenator ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π΄Π²Π° Π·Π°ΠΊΡΡΡΡΡ ΠΏΠΎΠ»Ρ — mIsIncrement ΠΈ mFinish. Π’ΠΎ, ΠΊΠ°ΠΊΠΎΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ Π±ΡΠ»Π΅Π²ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ mIsIncrement — Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΎ ΡΠ°Π²Π½ΠΎ true, ΡΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΏΡΠΈΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π΅Π΄ΠΈΠ½ΠΈΡΡ, ΠΈΠ½Π°ΡΠ΅ — Π²ΡΡΠΈΡΠ°Π½ΠΈΠ΅. Π Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠ° ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ, ΠΊΠΎΠ³Π΄Π° Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ mFinish ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΡΠ°Π²Π½ΠΎ true.
class Incremenator extends Thread.
{.
//Π ΠΊΠ»ΡΡΠ΅Π²ΠΎΠΌ ΡΠ»ΠΎΠ²Π΅ volatile — ΡΡΡΡ Π½ΠΈΠΆΠ΅.
private volatile boolean mIsIncrement = true;
private volatile boolean mFinish = false;
public void changeAction () //ΠΠ΅Π½ΡΠ΅Ρ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Π½Π° ΠΏΡΠΎΡΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΠΎΠ΅.
{.
mIsIncrement = !mIsIncrement;
}.
public void finish () //ΠΠ½ΠΈΡΠΈΠΈΡΡΠ΅Ρ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠ°.
{.
mFinish = true;
}.
@Override.
public void run ().
{.
do.
{.
if (!mFinish) //ΠΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ.
{.
if (mIsIncrement).
Program.mValue++; //ΠΠ½ΠΊΡΠ΅ΠΌΠ΅Π½Ρ.
else.
Program.mValue—; //ΠΠ΅ΠΊΡΠ΅ΠΌΠ΅Π½Ρ.
//ΠΡΠ²ΠΎΠ΄ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ.
System.out.print (Program.mValue + ««);
}.
else.
return; //ΠΠ°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠ°.
try{.
Thread.sleep (1000); //ΠΡΠΈΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΏΠΎΡΠΎΠΊΠ° Π½Π° 1 ΡΠ΅ΠΊ.
}catch (InterruptedException e){}.
}.
while (true);
}.
}.
public class Program.
{.
//ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π°Ρ, ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΎΠΏΠ΅ΡΠΈΡΡΠ΅Ρ ΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½Π°ΡΠΎΡ
public static int mValue = 0;
static Incremenator mInc; //ΠΠ±ΡΠ΅ΠΊΡ ΠΏΠΎΠ±ΠΎΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊΠ°.
public static void main (String[] args).
{.
mInc = new Incremenator (); //Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠ°.
System.out.print («ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ = «);
mInc.start (); //ΠΠ°ΠΏΡΡΠΊ ΠΏΠΎΡΠΎΠΊΠ°.
//Π’ΡΠΎΠ΅ΠΊΡΠ°ΡΠ½ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½Π°ΡΠΎΡΠ°.
//Ρ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»ΠΎΠΌ Π² i*2 ΡΠ΅ΠΊΡΠ½Π΄.
for (int i = 1; i <= 3; i++).
{.
try{.
Thread.sleep (i*2*1000); //ΠΠΆΠΈΠ΄Π°Π½ΠΈΠ΅ Π² ΡΠ΅ΡΠ΅Π½ΠΈΠΈ i*2 ΡΠ΅ΠΊ.
}catch (InterruptedException e){}.
mInc.changeAction (); //ΠΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ.
}.
mInc.finish (); //ΠΠ½ΠΈΡΠΈΠ°ΡΠΈΡ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ±ΠΎΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊΠ°.
}.
}.
ΠΠΎΠ½ΡΠΎΠ»Ρ:
ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ = 1 2 1 0 -1 -2 -1 0 1 2 3 4.
ΠΠ·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ Ρ ΠΏΠΎΡΠΎΠΊΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° changeAction () (Π΄Π»Ρ ΡΠΌΠ΅Π½Ρ Π²ΡΡΠΈΡΠ°Π½ΠΈΡ Π½Π° ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Π½Π°ΠΎΠ±ΠΎΡΠΎΡ) ΠΈ ΠΌΠ΅ΡΠΎΠ΄Π° finish () (Π΄Π»Ρ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΠΏΠΎΡΠΎΠΊΠ°). Π ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ mIsIncrement ΠΈ mFinish Π±ΡΠ»ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΎ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ volatile (ΠΈΠ·ΠΌΠ΅Π½ΡΠΈΠ²ΡΠΉ, Π½Π΅ ΠΏΠΎΡΡΠΎΡΠ½Π½ΡΠΉ). ΠΠ³ΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ , ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΡΠ°Π·Π½ΡΠΌΠΈ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ. ΠΡΠΎ ΡΠ²ΡΠ·Π°Π½ΠΎ Ρ ΡΠ΅ΠΌ, ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΎΠ±ΡΡΠ²Π»Π΅Π½Π½ΠΎΠΉ Π±Π΅Π· volatile, ΠΌΠΎΠΆΠ΅Ρ ΠΊΡΡΠΈΡΠΎΠ²Π°ΡΡΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊΠ°, ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ· ΡΡΠΎΠ³ΠΎ ΠΊΡΡΠ° ΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π·Π»ΠΈΡΠ°ΡΡΡΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· Π½ΠΈΡ . ΠΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ ΠΊΠ»ΡΡΠ΅Π²ΡΠΌ ΡΠ»ΠΎΠ²ΠΎΠΌ volatile ΠΎΡΠΊΠ»ΡΡΠ°Π΅Ρ Π΄Π»Ρ Π½Π΅Ρ ΡΠ°ΠΊΠΎΠ΅ ΠΊΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ Π²ΡΠ΅ Π·Π°ΠΏΡΠΎΡΡ ΠΊ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π±ΡΠ΄ΡΡ Π½Π°ΠΏΡΠ°Π²Π»ΡΡΡΡΡ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Π² ΠΏΠ°ΠΌΡΡΡ.
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°ΡΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ. ΠΠ΄Π½Π°ΠΊΠΎ Π΅ΡΡΡ ΠΎΠ΄Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΏΡΠΈ ΡΠ°ΠΊΠΎΠΌ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π΅ ΠΊ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΠΏΠΎΡΠΎΠΊΠ° — Incremenator ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ»Ρ mFinish ΡΠ°Π· Π² ΡΠ΅ΠΊΡΠ½Π΄Ρ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΎΠΉΡΠΈ Π΄ΠΎ ΡΠ΅ΠΊΡΠ½Π΄Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ΅ΠΌ, ΠΊΠΎΠ³Π΄Π° Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ ΠΌΠ΅ΡΠΎΠ΄ finish (), ΠΈ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΌ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΠΏΠΎΡΠΎΠΊΠ°. ΠΡΠ»ΠΎ Π±Ρ Π·Π°ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΠ½ΠΎ, Π΅ΡΠ»ΠΈ Π±Ρ ΠΏΡΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠΈ ΡΠΈΠ³Π½Π°Π»Π° ΠΈΠ·Π²Π½Π΅, ΠΌΠ΅ΡΠΎΠ΄ sleep () Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π» Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΈ ΠΏΠΎΡΠΎΠΊ Π½Π΅Π·Π°ΠΌΠ΅Π΄Π»ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π½Π°ΡΠΈΠ½Π°Π» ΡΠ²ΠΎΡ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅. ΠΠ»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΡΠ΅Π½Π°ΡΠΈΡ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠ΅ ΡΡΠ΅Π΄ΡΡΠ²ΠΎ ΠΎΠΏΠΎΠ²Π΅ΡΠ΅Π½ΠΈΡ ΠΏΠΎΡΠΎΠΊΠ°, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ Interruption (ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΠ΅, Π²ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΡΡΠ²ΠΎ).
ΠΠ»Π°ΡΡ Thread ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π² ΡΠ΅Π±Π΅ ΡΠΊΡΡΡΠΎΠ΅ Π±ΡΠ»Π΅Π²ΠΎ ΠΏΠΎΠ»Π΅, ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅ ΠΏΠΎΠ»Ρ mFinish Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ Incremenator, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΡΠ»Π°Π³ΠΎΠΌ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ. Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΡΠΎΡ ΡΠ»Π°Π³ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ·Π²Π°Π² ΠΌΠ΅ΡΠΎΠ΄ interrupt () ΠΏΠΎΡΠΎΠΊΠ°. ΠΡΠΎΠ²Π΅ΡΠΈΡΡ ΠΆΠ΅, ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ Π»ΠΈ ΡΡΠΎΡ ΡΠ»Π°Π³, ΠΌΠΎΠΆΠ½ΠΎ Π΄Π²ΡΠΌΡ ΡΠΏΠΎΡΠΎΠ±Π°ΠΌΠΈ. ΠΠ΅ΡΠ²ΡΠΉ ΡΠΏΠΎΡΠΎΠ± — Π²ΡΠ·Π²Π°ΡΡ ΠΌΠ΅ΡΠΎΠ΄ bool isInterrupted () ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΏΠΎΡΠΎΠΊΠ°, Π²ΡΠΎΡΠΎΠΉ — Π²ΡΠ·Π²Π°ΡΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΌΠ΅ΡΠΎΠ΄ bool Thread. interrupted (). ΠΠ΅ΡΠ²ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΡΠ»Π°Π³Π° ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ ΠΈ ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΡΠΎΡ ΡΠ»Π°Π³ Π½Π΅ΡΡΠΎΠ½ΡΡΡΠΌ. ΠΡΠΎΡΠΎΠΉ ΠΌΠ΅ΡΠΎΠ΄ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΡΠ»Π°Π³Π° ΠΈ ΡΠ±ΡΠ°ΡΡΠ²Π°Π΅Ρ Π΅Π³ΠΎ. ΠΠ°ΠΌΠ΅ΡΡΡΠ΅ ΡΡΠΎ Thread. interrupted () — ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΌΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° Thread, ΠΈ Π΅Π³ΠΎ Π²ΡΠ·ΠΎΠ² Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ»Π°Π³Π° ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ ΡΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊΠ°, ΠΈΠ· ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΎΠ½ Π±ΡΠ» Π²ΡΠ·Π²Π°Π½. ΠΠΎΡΡΠΎΠΌΡ ΡΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΈΠ·Π½ΡΡΡΠΈ ΠΏΠΎΡΠΎΠΊΠ° ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠΎΡΠΎΠΊΡ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΡΠ²ΠΎΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ.
ΠΡΠ»ΠΈ, Π²Π΅ΡΠ½ΡΡΡΡΡ ΠΊ Π½Π°ΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅. ΠΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ Π½Π°ΠΌ ΡΠ΅ΡΠΈΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ Π·Π°ΡΡΠΏΠ°Π½ΠΈΠ΅ΠΌ ΠΏΠΎΡΠΎΠΊΠ°. Π£ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ², ΠΏΡΠΈΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡΠΈΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠ°, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ sleep (), wait () ΠΈ join () Π΅ΡΡΡ ΠΎΠ΄Π½Π° ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡ — Π΅ΡΠ»ΠΈ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΈΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π±ΡΠ΄Π΅Ρ Π²ΡΠ·Π²Π°Π½ ΠΌΠ΅ΡΠΎΠ΄ interrupt () ΡΡΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊΠ°, ΠΎΠ½ΠΈ, Π½Π΅ Π΄ΠΎΠΆΠΈΠ΄Π°ΡΡΡ ΠΊΠΎΠ½ΡΠ° Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ, ΡΠ³Π΅Π½Π΅ΡΠΈΡΡΡΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ InterruptedException.
ΠΠ΅ΡΠ΅Π΄Π΅Π»Π°Π΅ΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Incremenator — ΡΠ΅ΠΏΠ΅ΡΡ Π²ΠΌΠ΅ΡΡΠΎ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΠΏΠΎΡΠΎΠΊΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° finish () Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ interrupt (). Π Π²ΠΌΠ΅ΡΡΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΠ»Π°Π³Π° mFinish Π±ΡΠ΄Π΅ΠΌ Π²ΡΠ·ΡΠ²Π°ΡΡ ΠΌΠ΅ΡΠΎΠ΄ bool Thread. interrupted ();
Π’Π°ΠΊ Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΠΊΠ»Π°ΡΡ Incremenator ΠΏΠΎΡΠ»Π΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΠΉ:
ΠΡΠΈΠΌΠ΅Ρ 6.
class Incremenator extends Thread.
{.
private volatile boolean mIsIncrement = true;
public void changeAction ()//ΠΠ΅Π½ΡΠ΅Ρ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Π½Π° ΠΏΡΠΎΡΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΠΎΠ΅.
{.
mIsIncrement = !mIsIncrement;
}.
@Override.
public void run ().
{.
do.
{.
if (!Thread.interrupted ()) //ΠΡΠΎΠ²Π΅ΡΠΊΠ° ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ.
{.
if (mIsIncrement) Program. mValue++; //ΠΠ½ΠΊΡΠ΅ΠΌΠ΅Π½Ρ.
else Program. mValue—; //ΠΠ΅ΠΊΡΠ΅ΠΌΠ΅Π½Ρ.
//ΠΡΠ²ΠΎΠ΄ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ.
System.out.print (Program.mValue + ««);
}.
else.
return; //ΠΠ°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠ°.
try{.
Thread.sleep (1000);//ΠΡΠΈΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΏΠΎΡΠΎΠΊΠ° Π½Π° 1 ΡΠ΅ΠΊ.
}catch (InterruptedException e){.
return; //ΠΠ°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠ° ΠΏΠΎΡΠ»Π΅ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ.
}.
}.
while (true);
}.
}.
class Program.
{.
//ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π°Ρ, ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΎΠΏΠ΅ΡΠΈΡΡΠ΅Ρ ΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½Π°ΡΠΎΡ
public static int mValue = 0;
static Incremenator mInc; //ΠΠ±ΡΠ΅ΠΊΡ ΠΏΠΎΠ±ΠΎΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊΠ°.
public static void main (String[] args).
{.
mInc = new Incremenator (); //Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠ°.
System.out.print («ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ = «);
mInc.start (); //ΠΠ°ΠΏΡΡΠΊ ΠΏΠΎΡΠΎΠΊΠ°.
//Π’ΡΠΎΠ΅ΠΊΡΠ°ΡΠ½ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½Π°ΡΠΎΡΠ°.
//Ρ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»ΠΎΠΌ Π² i*2 ΡΠ΅ΠΊΡΠ½Π΄.
for (int i = 1; i <= 3; i++).
{.
try{.
Thread.sleep (i*2*1000); //ΠΠΆΠΈΠ΄Π°Π½ΠΈΠ΅ Π² ΡΠ΅ΡΠ΅Π½ΠΈΠΈ i*2 ΡΠ΅ΠΊ.
}catch (InterruptedException e){}.
mInc.changeAction (); //ΠΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ.
}.
mInc.interrupt (); //ΠΡΠ΅ΡΡΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΠ±ΠΎΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊΠ°.
}.
}.
ΠΠΎΠ½ΡΠΎΠ»Ρ:
ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ = 1 2 1 0 -1 -2 -1 0 1 2 3 4.
ΠΠ°ΠΊ Π²ΠΈΠ΄ΠΈΡΠ΅, ΠΌΡ ΠΈΠ·Π±Π°Π²ΠΈΠ»ΠΈΡΡ ΠΎΡ ΠΌΠ΅ΡΠΎΠ΄Π° finish () ΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π»ΠΈ ΡΠΎΡ ΠΆΠ΅ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΠΏΠΎΡΠΎΠΊΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΠΉ. Π ΡΡΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ ΠΎΠ΄Π½ΠΎ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²ΠΎ — ΠΌΠ΅ΡΠΎΠ΄ sleep () Π²Π΅ΡΠ½Π΅Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ (ΡΠ³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅) Π½Π΅Π·Π°ΠΌΠ΅Π΄Π»ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠΎΡΠ»Π΅ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ ΠΏΠΎΡΠΎΠΊΠ°. ΠΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅ΡΠΈΡΡ ΡΡΠΎ ΠΌΠ΅ΡΠΎΠ΄Ρ sleep () ΠΈ join () ΠΎΠ±ΡΡΠ½ΡΡΡ Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ try-catch. ΠΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΠ΅ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ ΡΠ°Π±ΠΎΡΡ ΡΡΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ². ΠΡΠ·ΡΠ²Π°ΡΡΠΈΠΉ ΠΈΡ ΠΊΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΡΠ²Π°ΡΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ InterruptedException, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΎΠ½ΠΈ Π±ΡΠΎΡΠ°ΡΡ ΠΏΡΠΈ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΠΈ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ.
2. ΠΠ΅ΡΠΎΠ΄Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠ΅ΡΡ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ.
2.1. ΠΠ΅ΡΠΎΠ΄ Thread. sleep ().
Thread.sleep () — ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΌΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° Thread, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΈΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠ°, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΎΠ½ Π±ΡΠ» Π²ΡΠ·Π²Π°Π½. ΠΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΌΠ΅ΡΠΎΠ΄Π° sleep () ΡΠΈΡΡΠ΅ΠΌΠ° ΠΏΠ΅ΡΠ΅ΡΡΠ°Π΅Ρ Π²ΡΠ΄Π΅Π»ΡΡΡ ΠΏΠΎΡΠΎΠΊΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ, ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΡΡ Π΅Π³ΠΎ ΠΌΠ΅ΠΆΠ΄Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ.
ΠΠ΅ΡΠΎΠ΄ sleep () ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π»ΠΈΠ±ΠΎ Π·Π°Π΄Π°Π½Π½ΠΎΠ΅ ΠΊΠΎΠ»-Π²ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ (ΠΌΠΈΠ»Π»ΠΈΡΠ΅ΠΊΡΠ½Π΄Ρ ΠΈΠ»ΠΈ Π½Π°Π½ΠΎΡΠ΅ΠΊΡΠ½Π΄Ρ) Π»ΠΈΠ±ΠΎ Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ ΠΏΠΎΠΊΠ° ΠΎΠ½ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΎΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΠ΅ΠΌ (Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΎΠ½ ΡΠ³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ InterruptedException).
ΠΡΠΈΠΌΠ΅Ρ 7.
Thread.sleep (1500); //ΠΠ΄Π΅Ρ ΠΏΠΎΠ»ΡΠΎΡΡ ΡΠ΅ΠΊΡΠ½Π΄Ρ.
Thread.sleep (2000, 100); //ΠΠ΄Π΅Ρ 2 ΡΠ΅ΠΊΡΠ½Π΄Ρ ΠΈ 100 Π½Π°Π½ΠΎΡΠ΅ΠΊΡΠ½Π΄ ΠΠ΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ, ΡΡΠΎ ΠΌΠ΅ΡΠΎΠ΄ sleep () ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ Π½Π°Π½ΠΎΡΠ΅ΠΊΡΠ½Π΄Ρ, Π½Π΅ ΡΡΠΎΠΈΡ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΡΡΠΎ Π²ΡΠ΅ΡΡΠ΅Π·. ΠΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ Π²ΡΠ΅ΠΌΡ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ Π²ΡΠ΅ ΡΠ°Π²Π½ΠΎ ΠΎΠΊΡΡΠ³Π»ΡΠ΅ΡΡΡ Π΄ΠΎ ΠΌΠΈΠ»Π»ΠΈΡΠ΅ΠΊΡΠ½Π΄, Π° ΡΠΎ ΠΈ Π΄ΠΎ ΠΈΡ Π΄Π΅ΡΡΡΠΊΠΎΠ².
2.2. ΠΠ΅ΡΠΎΠ΄ yield ().
Π‘ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΌΠ΅ΡΠΎΠ΄ Thread. yield () Π·Π°ΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠΈΡΡΡΡ Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ Π΄ΡΡΠ³ΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ² ΡΠΈΡΡΠ΅ΠΌΡ.
ΠΠ΅ΡΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΌ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΡΠΎΠΊ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ Π½Π°ΡΡΡΠΏΠ»Π΅Π½ΠΈΡ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ ΡΠΎΠ±ΡΡΠΈΡ ΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΡΠΎΠ±Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π΅Π³ΠΎ Π½Π°ΡΡΡΠΏΠ»Π΅Π½ΠΈΡ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΠ»Π° ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΡΠ΅.
Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ ΡΠΎΠ±ΡΡΠΈΡ ΠΈ ΠΌΠ΅ΡΠΎΠ΄ Thread. yield () Π² ΡΠΈΠΊΠ»:
ΠΡΠΈΠΌΠ΅Ρ 8.
//ΠΠΆΠΈΠ΄Π°Π½ΠΈΠ΅ ΠΏΠΎΡΡΡΠΏΠ»Π΅Π½ΠΈΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ.
while (!msgQueue.hasMessages ()) //ΠΠΎΠΊΠ° Π² ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ Π½Π΅Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ.
{.
Thread.yield (); //ΠΠ΅ΡΠ΅Π΄Π°ΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π΄ΡΡΠ³ΠΈΠΌ ΠΏΠΎΡΠΎΠΊΠ°ΠΌ.
}.
2.3. ΠΠ΅ΡΠΎΠ΄ join ().
Π Java ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅Π½ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠΉ ΠΎΠ΄Π½ΠΎΠΌΡ ΠΏΠΎΡΠΎΠΊΡ ΠΆΠ΄Π°ΡΡ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π΄ΡΡΠ³ΠΎΠ³ΠΎ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ join (). ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠΎΠ±Ρ Π³Π»Π°Π²Π½ΡΠΉ ΠΏΠΎΡΠΎΠΊ ΠΏΠΎΠ΄ΠΎΠΆΠ΄Π°Π» Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ±ΠΎΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊΠ° myThready, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ myThready. join () Π² Π³Π»Π°Π²Π½ΠΎΠΌ ΠΏΠΎΡΠΎΠΊΠ΅. ΠΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠΎΠΊ myThready Π·Π°Π²Π΅ΡΡΠΈΡΡΡ, ΠΌΠ΅ΡΠΎΠ΄ join () Π²Π΅ΡΠ½Π΅Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅, ΠΈ Π³Π»Π°Π²Π½ΡΠΉ ΠΏΠΎΡΠΎΠΊ ΡΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅.
ΠΠ΅ΡΠΎΠ΄ join () ΠΈΠΌΠ΅Π΅Ρ ΠΏΠ΅ΡΠ΅Π³ΡΡΠΆΠ΅Π½Π½ΡΡ Π²Π΅ΡΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° Π²ΡΠ΅ΠΌΡ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ join () Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π»ΠΈΠ±ΠΎ ΠΊΠΎΠ³Π΄Π° Π·Π°Π²Π΅ΡΡΠΈΡΡΡ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡΠΉ ΠΏΠΎΡΠΎΠΊ, Π»ΠΈΠ±ΠΎ ΠΊΠΎΠ³Π΄Π° Π·Π°ΠΊΠΎΠ½ΡΠΈΡΡΡ Π²ΡΠ΅ΠΌΡ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ. ΠΠΎΠ΄ΠΎΠ±Π½ΠΎ ΠΌΠ΅ΡΠΎΠ΄Ρ Thread. sleep () ΠΌΠ΅ΡΠΎΠ΄ join ΠΌΠΎΠΆΠ΅Ρ ΠΆΠ΄Π°ΡΡ Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΌΠΈΠ»Π»ΠΈΡΠ΅ΠΊΡΠ½Π΄ ΠΈ Π½Π°Π½ΠΎΡΠ΅ΠΊΡΠ½Π΄ — Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ ΡΠ΅ ΠΆΠ΅.
Π‘ ΠΏΠΎΠΌΠΎΡΡΡ Π·Π°Π΄Π°Π½ΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ ΠΏΠΎΡΠΎΠΊΠ° ΠΌΠΎΠΆΠ½ΠΎ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π°Π½ΠΈΠΌΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ ΠΏΠΎΠΊΠ° Π³Π»Π°Π²Π½ΡΠΉ (ΠΈΠ»ΠΈ Π»ΡΠ±ΠΎΠΉ Π΄ΡΡΠ³ΠΎΠΉ) ΠΏΠΎΡΠΎΠΊ ΠΆΠ΄ΡΡ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ±ΠΎΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊΠ°, Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠ΅Π³ΠΎ ΡΠ΅ΡΡΡΡΠΎΡΠΌΠΊΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ:
ΠΡΠΈΠΌΠ΅Ρ 9.
Thinker brain = new Thinker (); //Thinker — ΠΏΠΎΡΠΎΠΌΠΎΠΊ ΠΊΠ»Π°ΡΡΠ° Thread.
brain.start (); //ΠΠ°ΡΠ°ΡΡ «ΠΎΠ±Π΄ΡΠΌΡΠ²Π°Π½ΠΈΠ΅» .
do.
{.
mThinkIndicator.refresh ();//mThinkIndicator — Π°Π½ΠΈΠΌΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠ°.
try{.
brain.join (250); //ΠΠΎΠ΄ΠΎΠΆΠ΄Π°ΡΡ ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΡ ΠΌΡΡΠ»ΠΈ ΡΠ΅ΡΠ²Π΅ΡΡΡ ΡΠ΅ΠΊΡΠ½Π΄Ρ.
}catch (InterruptedException e){}.
}.
while (brain.isAlive ()); //ΠΠΎΠΊΠ° brain Π΄ΡΠΌΠ°Π΅Ρ…
//brain Π·Π°ΠΊΠΎΠ½ΡΠΈΠ» Π΄ΡΠΌΠ°ΡΡ (Π·Π²ΡΡΠ°Ρ ΠΎΠ²Π°ΡΠΈΠΈ).
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΏΠΎΡΠΎΠΊ brain (ΠΌΠΎΠ·Π³) Π΄ΡΠΌΠ°Π΅Ρ Π½Π°Π΄ ΡΠ΅ΠΌ-ΡΠΎ, ΠΈ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ, ΡΡΠΎ ΡΡΠΎ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ Ρ Π½Π΅Π³ΠΎ Π΄Π»ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ. ΠΠ»Π°Π²Π½ΡΠΉ ΠΏΠΎΡΠΎΠΊ ΠΆΠ΄Π΅Ρ Π΅Π³ΠΎ ΡΠ΅ΡΠ²Π΅ΡΡΡ ΡΠ΅ΠΊΡΠ½Π΄Ρ ΠΈ, Π² ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ ΡΡΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π½Π° ΡΠ°Π·Π΄ΡΠΌΡΠ΅ Π½Π΅ Ρ Π²Π°ΡΠΈΠ»ΠΎ, ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅Ρ «ΠΈΠ½Π΄ΠΈΠΊΠ°ΡΠΎΡ ΡΠ°Π·Π΄ΡΠΌΠΈΠΉ» (Π½Π΅ΠΊΠΎΡΠΎΡΠ°Ρ Π°Π½ΠΈΠΌΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠ°). Π ΠΈΡΠΎΠ³Π΅, Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ°Π·Π΄ΡΠΌΠΈΠΉ, ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π°Π±Π»ΡΠ΄Π°Π΅Ρ Π½Π° ΡΠΊΡΠ°Π½Π΅ ΠΈΠ½Π΄ΠΈΠΊΠ°ΡΠΎΡ ΠΌΡΡΠ»ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ°, ΡΡΠΎ Π΄Π°Π΅Ρ Π΅ΠΌΡ Π·Π½Π°ΡΡ, ΡΡΠΎ ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΡΠ΅ ΠΌΠΎΠ·Π³ΠΈ ΡΠ΅ΠΌ-ΡΠΎ Π·Π°Π½ΡΡΡ.
3. ΠΡΠΈΠΎΡΠΈΡΠ΅ΡΡ ΠΏΠΎΡΠΎΠΊΠΎΠ² ΠΠ°ΠΆΠ΄ΡΠΉ ΠΏΠΎΡΠΎΠΊ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ ΠΈΠΌΠ΅Π΅Ρ ΡΠ²ΠΎΠΉ ΠΏΡΠΈΠΎΡΠΈΡΠ΅Ρ. ΠΡΠΈΠΎΡΠΈΡΠ΅Ρ — ΡΡΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΠΈΡΠ»ΠΎ Π² ΠΎΠ±ΡΠ΅ΠΊΡΠ΅ ΠΏΠΎΡΠΎΠΊΠ°, Π±ΠΎΠ»Π΅Π΅ Π²ΡΡΠΎΠΊΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ Π±ΠΎΠ»ΡΡΠΈΠΉ ΠΏΡΠΈΠΎΡΠΈΡΠ΅Ρ. Π‘ΠΈΡΡΠ΅ΠΌΠ° Π² ΠΏΠ΅ΡΠ²ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΏΠΎΡΠΎΠΊΠΈ Ρ Π±ΠΎΠ»ΡΡΠΈΠΌ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠΎΠΌ, Π° ΠΏΠΎΡΠΎΠΊΠΈ Ρ ΠΌΠ΅Π½ΡΡΠΈΠΌ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠΎΠΌ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° ΠΈΡ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠΎΠ±ΡΠ°ΡΡΡ ΠΏΡΠΎΡΡΠ°ΠΈΠ²Π°ΡΡ.
Π Π°Π±ΠΎΡΠ°ΡΡ Ρ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠ°ΠΌΠΈ ΠΏΠΎΡΠΎΠΊΠ° ΠΌΠΎΠΆΠ½ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π΄Π²ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ:
void setPriority (int priority) — ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΠΏΡΠΈΠΎΡΠΈΡΠ΅Ρ ΠΏΠΎΡΠΎΠΊΠ°.
ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ priority — MIN_PRIORITY, NORM_PRIORITY ΠΈ MAX_PRIORITY.int getPriority () — ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ΠΏΡΠΈΠΎΡΠΈΡΠ΅Ρ ΠΏΠΎΡΠΎΠΊΠ°.
ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ»Π΅Π·Π½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΊΠ»Π°ΡΡΠ° Thread ΡΠ°Π±ΠΎΡΡ Ρ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ.
boolean isAlive () — Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ true Π΅ΡΠ»ΠΈ myThready () Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΈ false Π΅ΡΠ»ΠΈ ΠΏΠΎΡΠΎΠΊ Π΅ΡΠ΅ Π½Π΅ Π±ΡΠ» Π·Π°ΠΏΡΡΠ΅Π½ ΠΈΠ»ΠΈ Π±ΡΠ» Π·Π°Π²Π΅ΡΡΠ΅Π½.
setName (String threadName) — ΠΠ°Π΄Π°Π΅Ρ ΠΈΠΌΡ ΠΏΠΎΡΠΎΠΊΠ°.
String getName () — ΠΠΎΠ»ΡΡΠ°Π΅Ρ ΠΈΠΌΡ ΠΏΠΎΡΠΎΠΊΠ°.
ΠΠΌΡ ΠΏΠΎΡΠΎΠΊΠ° — Π°ΡΡΠΎΡΠΈΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ Ρ Π½ΠΈΠΌ ΡΡΡΠΎΠΊΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ Π² Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ»ΡΡΠ°ΡΡ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΠΏΠΎΠ½ΡΡΡ, ΠΊΠ°ΠΊΠΎΠΉ ΠΏΠΎΡΠΎΠΊ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅. ΠΠ½ΠΎΠ³Π΄Π° ΡΡΠΎ Π±ΡΠ²Π°Π΅Ρ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΌ.
static Thread Thread. currentThread () — ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΌΠ΅ΡΠΎΠ΄, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΠΈΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΏΠΎΡΠΎΠΊΠ°, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΎΠ½ Π±ΡΠ» Π²ΡΠ·Π²Π°Π½.
long getId () — Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΏΠΎΡΠΎΠΊΠ°. ΠΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ — ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ, ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½Π½ΠΎΠ΅ ΠΏΠΎΡΠΎΠΊΡ.
Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° Π³ΠΎΠ»ΠΎΠ΄Π°Π½ΠΈΠ΅ ΠΏΠΎΡΠΎΠΊ Π·Π°ΠΏΡΡΠΊ.
4. ΠΡΠΎΠ±Π»Π΅ΠΌΡ ΠΏΡΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Π‘Π»Π΅Π΄ΡΡΠ²ΠΈΠ΅ΠΌ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½Π½ΠΎΠΉ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ Π±ΠΎΠ»ΡΡΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ. Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· Π½ΠΈΡ .
4.1 ΠΠ·Π°ΠΈΠΌΠ½Π°Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° (deadlock).
ΠΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΠΊΠΎΠ³Π΄Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠΎΠΊΠΎΠ² ΠΏΡΠΈ ΠΏΠΎΠΏΡΡΠΊΠΈ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌ ΡΠΎΡΠΊΠ°ΠΌ Π±Π»ΠΎΠΊΠΈΡΡΡΡΡΡ Π² ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠΈ Π΄ΡΡΠ³Ρ Π΄ΡΡΠ³Π°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΡΠΎΠΊ Π²Π»Π°Π΄Π΅Π΅Ρ ΠΎΠ΄Π½ΠΎΠΉ ΡΠΎΡΠΊΠΎΠΉ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ, Π²ΡΠΎΡΠΎΠΉ Π΄ΡΡΠ³ΠΎΠΉ ΠΈ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· Π½ΠΈΡ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ Π·Π°Ρ Π²Π°ΡΠ° ΡΠΎΡΠΊΠΈ ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠΆΠ΅ Π·Π°Ρ Π²Π°ΡΠ΅Π½Π°. ΠΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΏΠΎ ΠΏΡΠΈΡΠΈΠ½Π΅ Π½Π΅ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΏΠΎΡΡΠ΄ΠΊΠ° Π·Π°Ρ Π²Π°ΡΠ° ΡΠΎΡΠ΅ΠΊ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ, ΡΡΠΎ Π½Π΅ Π²ΡΠ΅Π³Π΄Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π² Π±ΠΎΠ»ΡΡΠΎΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ. ΠΠ°Π½Π½Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΈΠΌΠ΅Π΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΡΠ΅ΡΠ΅Π½ΠΈΡ: Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π΄Π΅ΡΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π²Π·Π°ΠΈΠΌΠ½ΠΎΠΉ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΠΈ ΠΏΡΠΈΠ½ΡΡΠΈΠ΅ ΠΌΠ΅Ρ ΠΏΠΎ Π΅Ρ ΡΡΡΡΠ°Π½Π΅Π½ΠΈΡ, Π·Π°Ρ Π²Π°ΡΡΠ²Π°ΡΡ ΡΠΎΡΠΊΡ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ Π±Π΅Π· ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎΠΉ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° Π·Π°Ρ Π²Π°ΡΠ°, ΠΆΡΡΡΠΊΠΎ Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎΡΡΠ΄ΠΎΠΊ Π·Π°Ρ Π²Π°ΡΠ°. ΠΡΠΆΠ½ΠΎ ΡΡΠΈΡΡΠ²Π°ΡΡ, ΡΡΠΎ ΡΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠ½Π° Π΄Π»Ρ Π»ΡΠ±ΠΎΠ³ΠΎ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΏΠΎΡΠΎΠΊ Π½Π°Π²ΡΠ΅Π³Π΄Π°. Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΎΡΡΠ΅ΠΉΡΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ Π²Π·Π°ΠΈΠΌΠ½ΠΎΠΉ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ.
ΠΡΠΈΠΌΠ΅Ρ 10.
public class DeadLock {.
public static void main (String[] args) {.
final ReentrantLock lock1 = new ReentrantLock ();
final ReentrantLock lock2 = new ReentrantLock ();
Thread t = new Thread (new Runnable () {.
@Override.
public void run () {.
lock1.lock ();
delay ();
lock2.lock ();
try {.
//ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΠ΅ΠΊΡΠΈΡ.
}.
finally {.
lock1.unlock ();
lock2.unlock ();
}.
}.
}, «slave»);
t.start ();
lock2.lock ();
delay ();
lock1.lock ();
try {.
//ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΠ΅ΠΊΡΠΈΡ.
}.
finally {.
lock2.unlock ();
lock1.unlock ();
}.
System.out.println («finished»);
}.
/**.
* ΠΠ°Π΄Π΅ΡΠΆΠΊΠ° Π½Π° 1 ΡΠ΅ΠΊΡΠ½Π΄Ρ.
*/.
public static void delay () {.
try {.
Thread.sleep (1000);
} catch (InterruptedException e) {.
e.printStackTrace ();
}.
}.
}.
ΠΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π²ΡΡΠ΅ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΏΡΠΈΠ²Π΅Π΄ΡΡ ΠΊ Π²ΡΠ²ΠΎΠ΄Ρ Π½Π° ΡΠΊΡΠ°Π½ ΡΡΡΠΎΠΊΠΈ «finished». ΠΠΎΡΠΎΠΊΠΈ main ΠΈ slave Π±ΡΠ΄ΡΡ Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½Ρ Π½Π°Π²ΡΠ΅Π³Π΄Π° ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΠΏΠ΅ΡΠ²ΡΠΉ Π·Π°Ρ Π²Π°ΡΠΈΡ lock1, Π° Π²ΡΠΎΡΠΎΠΉ lock2. Π ΡΠ°ΠΊΠΎΠΌ ΠΌΠ°Π»Π΅Π½ΡΠΊΠΎΠΌ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠ΅ ΠΊΠΎΠ΄Π° Π½Π΅ Π²ΡΠ·ΠΎΠ²Π΅Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Π΄Π΅ΡΠ΅ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ Π²Π·Π°ΠΈΠΌΠ½ΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ ΠΏΡΠΎΡΡΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠ΅Π² Π»ΠΈΡΡΠΈΠ½Π³. Π ΡΠ΅Π°Π»ΡΠ½ΠΎΡΡΠΈ Π½Π΅ Π²ΡΠ΅Π³Π΄Π° ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ ΡΡΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Π½Π° ΡΡΠ°ΠΏΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ (Ρ ΠΎΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ ΠΊΠΎΠ΄Π°), ΠΏΠΎΡΡΠΎΠΌΡ ΡΡΠ΅Π±ΡΡΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Ρ Π΄Π΅ΡΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ°ΠΊΠΈΡ ΡΠΈΡΡΠ°ΡΠΈΠΉ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. ΠΠ°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ΄ΠΎΠ±Π½ΡΠΌ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΠ·ΡΡΠ΅Π½ΠΈΡ Π΄Π°ΠΌΠΏΠ° ΠΏΠΎΡΠΎΠΊΠΎΠ², ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠΈΠ»ΠΈΡΡ jstack, Π»ΠΈΠ±ΠΎ ΠΏΠΎΡΠ»Π°Π² ΡΠΈΠ³Π½Π°Π» Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠΎΠΌΡ ΠΏΡΠΎΡΠ΅ΡΡΡ (Π΄Π»Ρ ΠΊΠΎΠ½ΡΠΎΠ»ΡΠ½ΠΎΠ³ΠΎ windows ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Ctrl+Break, Π² linux ΡΠΈΠ³Π½Π°Π» SIGQUIT). ΠΠ»Ρ Π½Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΡΠ°ΡΡΡ Π΄Π°ΠΌΠΏΠ° ΠΏΠΎΡΠΎΠΊΠΎΠ² Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΠΎΠΌΡ Π½ΠΈΠΆΠ΅.
ΠΡΠΈΠΌΠ΅Ρ 11.
Found one Java-level deadlock:
=============================.
" slave" :
waiting for ownable synchronizer 0×2299c870,.
(a java.util.concurrent.locks.ReentrantLock$NonfairSync),.
which is held by «main» .
" main" :
waiting for ownable synchronizer 0×2299c848,.
(a java.util.concurrent.locks.ReentrantLock$NonfairSync),.
which is held by «slave» .
Java stack information for the threads listed above:
===================================================.
" slave" :
at sun.misc.Unsafe.park (Native Method).
— parking to wait for <0×2299c870>
(a java.util.concurrent.locks.ReentrantLock$NonfairSync).
at java.util.concurrent.locks.LockSupport.park (Unknown Source).
… ΠΎΠΏΡΡΠ΅Π½Π° ΡΠ°ΡΡΡ Π²ΡΠ²ΠΎΠ΄Π° Π½Π΅ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½Π°Ρ Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΡ.
at java.lang.Thread.run (Unknown Source).
" main" :
at sun.misc.Unsafe.park (Native Method).
— parking to wait for <0×2299c848>
(a java.util.concurrent.locks.ReentrantLock$NonfairSync).
at java.util.concurrent.locks.LockSupport.park (Unknown Source).
… ΠΎΠΏΡΡΠ΅Π½Π° ΡΠ°ΡΡΡ Π²ΡΠ²ΠΎΠ΄Π° Π½Π΅ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½Π°Ρ Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΡ.
at kz.pnhz.test.sandbox.DeadLock.main (DeadLock.java:31).
Found 1 deadlock.
… ΠΎΠΏΡΡΠ΅Π½Π° ΡΠ°ΡΡΡ Π²ΡΠ²ΠΎΠ΄Π° Π½Π΅ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½Π°Ρ Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΡ Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Ρ Π»Π΅Π³ΠΊΠΎΡΡΡΡ ΡΠ°ΡΠΏΠΎΠ·Π½Π°ΡΡ ΠΏΡΠΈΡΠΈΠ½Ρ Π²Π·Π°ΠΈΠΌΠ½ΠΎΠΉ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ. Π₯ΠΎΡΡ deadlock ΡΠ°ΡΡΠΎ Π²ΡΡΠ²Π»ΡΠ΅ΡΡΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΠΎ ΠΏΡΠΈΡΠΈΠ½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ ΡΡΠΎ ΠΎΡΠΈΠ±ΠΊΠ° ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ»ΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΡΠΏΡΠ°Π²Π»ΡΡΡΡΡ Π½Π° ΡΡΠ°ΠΏΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ.
4.2. ΠΠΎΠ»ΠΎΠ΄Π°Π½ΠΈΠ΅ (starvation).
ΠΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΏΠΎΠ»Π½ΠΎΠΉ Π½Π΅Π΄ΠΎΡΡΡΠΏΠ½ΠΎΡΡΠΈ ΡΠ΅ΡΡΡΡΠΎΠ² ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΠΎΠΌΡ ΠΏΠΎΡΠΎΠΊΡ Π² ΡΠ²ΡΠ·ΠΈ Ρ ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΈΡ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ. ΠΠΎΠΆΠ΅Ρ ΠΏΡΠΎΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠΈ Π½Π΅ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΠΌ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ°Π·Π»ΠΈΡΠΈΠ΅ Π² ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠ°Ρ Π½Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ ), Π»ΠΈΠ±ΠΎ Π±ΠΎΠ»Π΅Π΅ ΡΠ°ΡΡΡΠΉ ΡΠ»ΡΡΠ°ΠΉ — ΠΎΡΠΈΠ±ΠΊΠΈ ΠΏΡΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ. ΠΡΠ»ΠΈ Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊΠ° Π±ΡΠ΄Π΅Ρ Π²ΡΡΡΠ°Π²Π»Π΅Π½ ΠΎΡΠ΅Π½Ρ Π²ΡΡΠΎΠΊΠΈΠΉ ΠΏΡΠΈΠΎΡΠΈΡΠ΅Ρ, Π° Ρ Π΄ΡΡΠ³ΠΎΠ³ΠΎ Π½ΠΈΠ·ΠΊΠΈΠΉ, ΡΠΎ ΠΏΠ΅ΡΠ²ΡΠΉ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΡΠ΅Π±Π»ΡΡΡ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΡ Π²ΡΠ΅ Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ΅ΡΡΡΡΡ, Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ Π²ΡΠΎΡΠΎΠΉ Π½Π΅ ΠΏΠΎΠ»ΡΡΠΈΡ ΠΈΡ Π²ΠΎΠ²ΡΠ΅. Π ΡΡΠ°ΡΡΡΡ, ΡΠ°ΠΊΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π½Π° Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΠΏΠ»Π°ΡΡΠΎΡΠΌ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΡ Java. Π ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΏΡΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠΈΠ²ΠΎΠ΄ΡΡΠΈΠ΅ ΠΊ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ΅ Π³ΠΎΠ»ΠΎΠ΄Π°Π½ΠΈΡ Π²ΠΏΠΎΠ»Π½Π΅ ΡΠ΅Π°Π»ΡΠ½Ρ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ ΠΎΡΠΈΠ±ΠΊΠ° Π½Π΅ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΡΠ»ΠΎΠ²ΠΈΡ Π²ΡΡ ΠΎΠ΄Π° ΠΈΠ· ΡΠΈΠΊΠ»Π° Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠ΅Π³ΠΎΡΡ ΠΏΡΠΈ Π·Π°Ρ Π²Π°ΡΠ΅Π½Π½ΠΎΠΉ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ΅, ΠΊΠΎΡΠΎΡΡΡ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ Π΄ΡΡΠ³ΠΎΠΉ ΠΏΠΎΡΠΎΠΊ.
ΠΡΠΈΠΌΠ΅Ρ 12.
public class Starvation {.
public static void main (String[] args) {.
final ReentrantLock lock1 = new ReentrantLock ();
Thread t = new Thread (new Runnable () {.
@Override.
public void run () {.
delay ();//ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½Π° DeadLock.
lock1.lock ();
try {.
//ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΠ΅ΠΊΡΠΈΡ.
System.out.println («completed»);
}.
finally {.
lock1.unlock ();
}.
}.
}, «slave»);
t.start ();
lock1.lock ();
try {.
while (!Thread.currentThread ().isInterrupted ()) {.
//ΡΡΠ»ΠΎΠ²ΠΈΠ΅ Π²ΡΡ ΠΎΠ΄Π° ΠΊΠΎΡΠΎΡΠΎΠ΅ Π½Π΅ Π½Π°ΡΡΡΠΏΠ°Π΅Ρ.
}.
}.
finally {.
lock1.unlock ();
}.
System.out.println («finished»);
}.
}.
ΠΠ΅ΡΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π³ΠΎΠ»ΠΎΠ΄Π°Π½ΠΈΡ Π½Π΅ ΡΡΠΎΠ»Ρ ΠΏΡΡΠΌΠΎΠ»ΠΈΠ½Π΅ΠΉΠ½ΠΎ ΠΊΠ°ΠΊ Π² ΡΠ»ΡΡΠ°Π΅ Ρ Π²Π·Π°ΠΈΠΌΠ½ΠΎΠΉ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΎΠΉ. ΠΡΠ»ΠΈ ΡΠΈΡΡΠ°ΡΠΈΡ ΠΏΠΎΠ΄ΠΎΠ±Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΡ, ΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ Π²ΡΡΠΈΡΠ»ΠΈΡΡ Π½Π΅ ΠΎΠΆΠΈΠ΄Π°ΡΡΠΈΠΉ ΠΏΠΎΡΠΎΠΊ Ρ Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΡΠΌ ΡΠΈΠΊΠ»ΠΎΠΌ Π»ΡΠ±ΠΎΠΉ ΡΡΠΈΠ»ΠΈΡΠΎΠΉ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡΠ΅ΠΉ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² ΠΈ ΠΏΠΎΡΠΎΠΊΠΎΠ² Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅. ΠΠ°Π»Π΅Π΅ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄Π°ΠΌΠΏ ΠΏΠΎΡΠΎΠΊΠΎΠ² ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΌΠ΅ΡΡΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ. ΠΠΎ Π΅ΡΠ»ΠΈ Π² ΡΠ°ΠΊΠΎΠΉ ΡΠΈΡΡΠ°ΡΠΈΠΈ Π²Π½ΡΡΡΠΈ ΡΠΈΠΊΠ»Π° ΠΏΠΎΡΠΎΠΊ Π±ΡΠ΄Π΅Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡΡΡ Π² ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠΈ ΡΠΎΠ±ΡΡΠΈΡ ΠΈΠ»ΠΈ ΠΏΡΠΎΡΡΠΎ ΠΎΡΠ΄Π°Π²Π°ΡΡ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΡ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊΡ (Thread.yield, Thread. sleep) ΡΡΡΡΠΏΠΈΡΡ ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΊΠ²Π°Π½Ρ, ΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π΅Ρ Π±ΡΠ΄Π΅Ρ ΡΠ»ΠΎΠΆΠ½Π΅Π΅. ΠΡΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ ΡΡΠ»ΠΎΠ²ΠΈΡΡ ΠΌΠΎΠ³ΡΡ ΠΏΡΠΈΠ³ΠΎΠ΄ΠΈΡΡΡΡ ΠΊΠ°ΠΊ ΡΡΡΠ½ΠΎΠ΅ Π½Π°Π±Π»ΡΠ΄Π΅Π½ΠΈΠ΅ Π·Π° ΡΡΠ΅ΠΊΠ°ΠΌΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΈ ΡΠΎΡΡΠΎΡΠ½ΠΈΡΠΌΠΈ ΠΏΠΎΡΠΎΠΊΠΎΠ² Π²ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΡΠ°ΠΊ ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ (ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡΡ Π΄Π»ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ ΡΠ±ΠΎΡΠ° ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠΈ).
4.3 ΠΠΊΡΠΈΠ²Π½Π°Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° (livelock).
ΠΡΠΎ Π·Π°ΡΠΈΠΊΠ»ΠΈΠ²Π°Π½ΠΈΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ΠΌ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π² ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΠΌΠΎΠΆΠ΅Ρ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡΡΡ ΠΈΠ·Π²Π½Π΅. Π£ΡΠ»ΠΎΠ²ΠΈΠ΅ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΈΠ·Π²Π½Π΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ — ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ·ΠΌ (Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΡΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² Ρ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ). ΠΡΠΈ Π°ΠΊΡΠΈΠ²Π½ΠΎΠΉ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΠΏΠΎΡΠΎΠΊ Π½Π΅ Π±Π»ΠΎΠΊΠΈΡΡΠ΅ΡΡΡ, Π° ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ ΠΏΠΎΠΏΡΡΠΊΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅, Π½ΠΎ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π½Π΅ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΏΡΠΈ Π΅Π³ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ²ΡΠΎΡΡΠ΅Ρ Π΅Π³ΠΎ ΡΠ½ΠΎΠ²Π°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ Π² Π‘Π£ΠΠ, ΠΊΠΎΡΠΎΡΠ°Ρ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½Π° ΠΏΠΎ ΠΏΡΠΈΡΠΈΠ½Π΅ Π½Π°ΡΡΡΠ΅Π½ΠΈΡ Π² ΡΠ°Π±ΠΎΡΠ΅ ΡΠ΅ΡΠ²Π΅ΡΠ°, Π½ΠΎ Π½Π΅ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΡΠΉ ΠΊΠΎΠ΄ ΡΡΠ°ΠΊΡΡΠ΅Ρ ΠΎΡΠΈΠ±ΠΊΡ ΠΊΠ°ΠΊ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΈ ΠΏΡΡΠ°Π΅ΡΡΡ ΠΏΠΎΠ²ΡΠΎΡΠΈΡΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ. ΠΡΡ ΠΎΠ΄ΠΈΠ½ ΠΊΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΠΈΠ· ΠΎΠ±Π»Π°ΡΡΠΈ ΡΠ΅ΡΠ΅Π²ΡΡ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ. ΠΡΠ»ΠΈ Π΄Π²Π° ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΠΈΡ ΡΡΡΡΠΎΠΉΡΡΠ²Π° ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΏΡΡΠ°ΡΡΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π΄Π°Π½Π½ΡΠ΅, ΡΠΎ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ²Π°Ρ ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΡ ΠΈ ΠΏΠΎΠ²ΡΠΎΡΡΡ ΠΏΠΎΠΏΡΡΠΊΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ ΡΠ΅ΡΠ΅Π· ΡΠ°Π²Π½ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π½ΠΈ ΠΎΠ΄Π½ΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ Π½Π΅ ΡΠΌΠΎΠΆΠ΅Ρ Π½ΠΈΡΠ΅Π³ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π· ΡΠ°Π·Π΄Π΅Π»ΡΠ΅ΠΌΠ°Ρ ΡΡΠ΅Π΄Π° Π±ΡΠ΄Π΅Ρ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ ΡΠΈΠ³Π½Π°Π»Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠ².
ΠΠΎΠΌΠΈΠΌΠΎ ΡΠ°ΠΊΠΈΡ ΡΠ²Π½ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Π±Π»ΠΎΠΊΠΈΡΡΡΡΠΈΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅, ΠΊΠ°ΠΊ ΡΠΏΠΎΠΌΡΠ½ΡΡΡΠ΅ Π²ΡΡΠ΅ Π² ΡΡΠΎΠΉ ΡΠ΅ΠΊΡΠΈΠΈ, ΡΡΡΠ΅ΡΡΠ²ΡΡΡ ΠΈ ΠΌΠ΅Π½Π΅Π΅ ΠΊΡΠΈΡΠΈΡΠ½ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΈ Π»Π°ΡΠ΅Π½ΡΠ½ΠΎΡΡΠΈ (Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΠ΅Π°ΠΊΡΠΈΠΈ). ΠΠ°Π²Π΅ΡΠ½ΠΎΠ΅, Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ½Π½ΡΠΌ ΠΈΡ Π²ΠΈΠ΄ΠΎΠΌ, ΡΠ²ΡΠ·Π°Π½Π½ΡΠΌ Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡΡ, Π±ΡΠ΄Π΅Ρ ΡΠ²Π»ΡΡΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΡΠΎ ΡΠ»Π°Π±ΠΎ Π³ΡΠ°Π½ΡΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌΠΈ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ°ΠΌΠΈ (coarse-grained lock) ΠΈΠ»ΠΈ ΠΈΡ ΡΠΊΡΡΡΠ΅ΠΌΠ°Π»ΡΠ½ΡΠΌ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠΌ — Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠΌΠΈ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ°ΠΌΠΈ (global lock). Π‘ΡΡΡ ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΡΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΊ ΡΠΎΠΌΡ, ΡΡΠΎ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π±ΠΎΠ»ΡΡΠΈΡ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠ² ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠ΅ΠΊΡΠΈΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΡΡΠΎΠΌ ΡΡΠ°ΡΡΠΊΠ΅ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΡΠ΅ΡΡΡ (ΡΠΌΠΎΡΡΠΈ 2.4 ΠΠ»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ). Π ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°ΠΌ Π»Π°ΡΠ΅Π½ΡΠ½ΠΎΡΡΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠ½Π΅ΡΡΠΈ ΡΠΈΡΡΠ°ΡΠΈΡ Π±Π»ΠΈΠ·ΠΊΡΡ ΠΊ Π³ΠΎΠ»ΠΎΠ΄Π°Π½ΠΈΡ, ΠΊΠΎΠ³Π΄Π° ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΏΠΎΡΠΎΠΊ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π½Π΅ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ Π²ΡΠ΅ΠΌΡ ΡΠ΅Π½ΡΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° ΠΈΠ»ΠΈ ΠΏΡΠΎΡΠΈΠΉ ΡΠ΅ΡΡΡΡ, Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΡΠ΅Π³ΠΎ ΡΠ°ΡΡΡΠ³ΠΈΠ²Π°Π΅ΡΡΡ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ.
Π Π΄Π°Π½Π½ΠΎΠΌ ΠΎΠ±Π·ΠΎΡΠ΅ ΠΎΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ, Ρ ΠΎΡΡ Π±Ρ ΠΎΡΠ΅Π½Ρ ΠΊΡΠ°ΡΠΊΠΎ, Π±ΠΎΠ»ΡΡΠ°Ρ ΡΠ°ΡΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ Π²ΠΎΠΏΡΠΎΡΠΎΠ² ΡΠ²ΡΠ·Π°Π½Π½ΡΡ Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΎΠΉ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ° Π² Java. ΠΠ°Π΄Π΅ΡΡΡ, ΠΌΠ½Π΅ ΡΠ΄Π°Π»ΠΎΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½ΡΠ΅ Π°ΡΠΏΠ΅ΠΊΡΡ ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π² Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎΠΌ Π΄Π»Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΌΠ΅.
ΠΠ»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠΎΡΡΠ°Π²Π»Π΅Π½Π½ΠΎΠΉ Π·Π°Π΄Π°ΡΠΈ Ρ Π±ΡΠ΄Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΡ ΠΈ ΠΏΠΎΡΠΎΠΊΠΈ, Π½ΠΎ ΠΌΠ½Π΅ Π½Π΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠ΅ Π² ΠΎΠ±Π·ΠΎΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π·Π°Π΄Π°ΡΠ° ΡΡΠΎΠΈΡ Π² ΠΎΡΠ΅Π½ΠΊΠ΅ Π±ΡΡΡΡΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΠ°Π·Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΠΏΠΎΡΠΎΠΊΠΎΠ².
ΠΠ»Π³ΠΎΡΠΈΡΠΌ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π‘ΠΎΠ³Π»Π°ΡΠ½ΠΎ ΡΡΠΎΠΌΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ Π½Π°ΠΏΠΈΡΠ΅ΠΌ ΡΠ΅ΠΊΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΠΈΡΡΠΈΠ½Π³ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΏΡΠΈΠ²Π΅Π΄Π΅ΠΌ Π½ΠΈΠΆΠ΅.
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ 1.
import javax. swing.*; //ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π²ΡΠ²ΠΎΠ΄Π° ΠΎΠΊΠ½Π° //Π½Π° ΡΠΊΡΠ°Π½.
public class Vine {.
static int x=0,y=0,z=1; //ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΎΠ±ΡΠΈΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² //ΡΡΠ½ΠΊΡΠΈΠΈ.
//**********************************ΠΏΠΎΠ΄ΡΡΠ΅Ρ c ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΡΡΠΈ.
public static class ThreadTest implements Runnable {.
long before1=0;long after1=0; //ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΏΠΎΠ΄ΡΡΠ΅ΡΠ° Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ.
public void run () {.
double calc; //ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΠΏΠΎΠ΄ΡΡΠ΅ΡΠ° Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΡΡΠ½ΠΊ //ΡΠΈΠΈ.
before1 = System. currentTimeMillis (); //ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π²ΡΠ΅ //ΠΌΠ΅Π½ΠΈ «Π΄ΠΎ».
for (int i=0; i<5000; i++) {.
//ΠΏΠΎΠ΄ΡΡΠ΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ.
calc =(Math.sin (i*y)*Math.cos (z*2))+(Math.cos (i*y)*Math.sin (2*z));
//ΡΡΠ»ΠΎΠ²ΠΈΠ΅ Π²ΡΠ²ΠΎΠ΄Π° Π½Π° ΡΠΊΡΠ°Π½ ΠΏΡΠΎΠΌΠ΅ΠΆΡ //ΡΠΎΡΠ½ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ.
if (i%1000==0) { //ΡΡΠ»ΠΎΠ²ΠΈΠ΅ Π²ΡΠ²ΠΎΠ΄Π° ΠΏΡΠΎΠΌΠ΅ΠΆ. Π·Π½Π°Ρ.
after1=System.currentTimeMillis (); //ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π²ΡΠ΅ //ΠΌΠ΅Π½ΠΈ «ΠΏΠΎΡΠ»Π΅».
//Π²ΡΠ²ΠΎΠ΄ Π½Π° ΡΠΊΡΠ°Π½ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΠΎΠ³ΠΎ //Π·Π½Π°ΡΠ΅Π½ΠΈΡ.
System.out.format («%s count %d fixing %.4f time %d msn», getName (),(i/1000), calc,(after1-before1));
}.
}.
}.
}.
public static String getName () {.
return Thread. currentThread ().getName (); //Π²ΠΎΠ·Π²ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠΎΡΠΎΠΊΠ°.
}.
//*********************************ΠΏΠΎΠ΄ΡΡΠ΅Ρ Π±Π΅Π· ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΡΡΠΈ.
public static void free () {.
long before2=0;long after2=0; //ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΏΠΎΠ΄ΡΡΠ΅ΡΠ° Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ.
before2= System. currentTimeMillis (); //ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π²ΡΠ΅ //ΠΌΠ΅Π½ΠΈ «Π΄ΠΎ».
double calc; //ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΠΏΠΎΠ΄ΡΡΠ΅ΡΠ° Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΡΡΠ½ΠΊ //ΡΠΈΠΈ.
for (int i=0; i<5000; i++) {.
//ΠΏΠΎΠ΄ΡΡΠ΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ.
calc =(Math.sin (i*y)*Math.cos (z*2))+(Math.cos (i*y)*Math.sin (2*z));
if (i%1000==0) { //ΡΡΠ»ΠΎΠ²ΠΈΠ΅ Π²ΡΠ²ΠΎΠ΄Π° ΠΏΡΠΎΠΌΠ΅ΠΆ. Π·Π½Π°Ρ.
after2=System.currentTimeMillis (); //ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π²ΡΠ΅ //ΠΌΠ΅Π½ΠΈ «ΠΏΠΎΡΠ»Π΅».
//Π²ΡΠ²ΠΎΠ΄ Π½Π° ΡΠΊΡΠ°Π½ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΠΎΠ³ΠΎ //Π·Π½Π°ΡΠ΅Π½ΠΈΡ.
System.out.format («count %d fixing: %.4f time %d msn» ,(i/1000), calc,(after2-before2));
}.
}.
}.
public static void main (String[] args) { //ΡΡΠ½ΠΊΡΠΈΡ main ().
//Π²ΡΠ²ΠΎΠ΄ Π·Π°ΠΏΡΠΎΡΠ° Π½Π° ΡΠΊΡΠ°Π½.
String input_x = JOptionPane. showInputDialog («ΠΠ²Π΅Π΄ΠΈΡΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΠΎΡΠΎΠΊΠΎΠ²:»);
x = Integer. parseInt (input_x); //ΡΡΠΈΡΡΠ²Π°Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ.
//Π²ΡΠ²ΠΎΠ΄ Π·Π°ΠΏΡΠΎΡΠ° Π½Π° ΡΠΊΡΠ°Π½.
String input_y = JOptionPane. showInputDialog («ΠΠ²Π΅Π΄ΠΈΡΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ A:») ;
y = Integer. parseInt (input_y); //ΡΡΠΈΡΡΠ²Π°Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ.
//Π²ΡΠ²ΠΎΠ΄ Π·Π°ΠΏΡΠΎΡΠ° Π½Π° ΡΠΊΡΠ°Π½.
String input_z = JOptionPane. showInputDialog («ΠΠ²Π΅Π΄ΠΈΡΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ B:») ;
z = Integer. parseInt (input_z); //ΡΡΠΈΡΡΠ²Π°Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ.
//Π²ΡΠ²ΠΎΠ΄ Π½Π° ΠΊΠΎΠ½ΡΠΎΠ»Ρ ΡΠ΅ΠΊΡΡΠ°.
System.out.format («<ΠΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π±Π΅Π· ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΡΡΠΈ>n»);
free (); //Π²ΡΠ·ΠΎΠ² ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ ΠΏΠΎΠ΄ΡΡΠ΅ΡΠ° Π·Π½Π°ΡΠ΅Π½ΠΈΡ //ΡΡΠ½ΠΊΡΠΈΠΈ Π±Π΅Π· ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΡΡΠΈ.
//Π²ΡΠ²ΠΎΠ΄ Π½Π° ΠΊΠΎΠ½ΡΠΎΠ»Ρ ΡΠ΅ΠΊΡΡΠ°.
System.out.format («<ΠΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ c ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΡΡΠΈ>n»);
// ΠΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠ° ΠΏΠΎΡΠΎΠΊΠΎΠ².
Thread t[] = new Thread[x];
for (int i=0; i<t.length; i++) {.
t[i]=new Thread (new ThreadTest ()," Thread «+i);
}.
// ΠΠ°ΠΏΡΡΠΊ ΠΏΠΎΡΠΎΠΊΠΎΠ².
for (int i=0; i<t.length; i++) {.
t[i]. start ();
System.out.format («%s <starter> n», t[i]. getName ());
}.
System. exit (0); //Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
}.
}.
ΠΡΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡΡΠ΅ΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. Π Π΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ Π½ΠΈΠΆΠ΅.
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ 2.
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ 1.
ΠΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ 5 ΠΏΠΎΡΠΎΠΊΠΎΠ².
<ΠΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π±Π΅Π· ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΡΡΠΈ>
count 0 fixing: 0,9093 time 0 ms.
count 1 fixing: 0,9974 time 16 ms.
count 2 fixing: 0,5394 time 16 ms.
count 3 fixing: -0,9384 time 16 ms.
count 4 fixing: 0,5476 time 31 ms.
<ΠΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ c ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΡΡΠΈ>
Thread 0 <starter>
Thread 1 <starter>
Thread 2 <starter>
Thread 2 count 0 fixing 0,9093 time 0 ms.
Thread 2 count 1 fixing 0,9974 time 47 ms.
Thread 2 count 2 fixing 0,5394 time 47 ms.
Thread 2 count 3 fixing -0,9384 time 47 ms.
Thread 1 count 0 fixing 0,9093 time 0 ms.
Thread 1 count 1 fixing 0,9974 time 62 ms.
Thread 1 count 2 fixing 0,5394 time 62 ms.
Thread 1 count 3 fixing -0,9384 time 62 ms.
Thread 1 count 4 fixing 0,5476 time 78 ms.
Thread 3 <starter>
Thread 4 <starter>
Thread 0 count 0 fixing 0,9093 time 0 ms.
Thread 0 count 1 fixing 0,9974 time 78 ms.
Thread 0 count 2 fixing 0,5394 time 78 ms.
Thread 0 count 3 fixing -0,9384 time 94 ms.
Thread 0 count 4 fixing 0,5476 time 94 ms.
Thread 2 count 4 fixing 0,5476 time 109 ms.
Thread 3 count 0 fixing 0,9093 time 0 ms.
Thread 3 count 1 fixing 0,9974 time 0 ms.
Thread 3 count 2 fixing 0,5394 time 16 ms.
Thread 3 count 3 fixing -0,9384 time 16 ms.
Thread 3 count 4 fixing 0,5476 time 16 ms.
Thread 4 count 0 fixing 0,9093 time 0 ms.
Thread 4 count 1 fixing 0,9974 time 0 ms.
Thread 4 count 2 fixing 0,5394 time 0 ms.
Thread 4 count 3 fixing -0,9384 time 16 ms.
Thread 4 count 4 fixing 0,5476 time 16 ms.
ΠΠ½Π°Π»ΠΈΠ·: Π‘ΠΎΠ³Π»Π°ΡΠ½ΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ 1. Π²ΠΈΠ΄Π½ΠΎ ΡΡΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π·Π° 31 ΠΌΡ, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΠ°Π·Π±ΠΈΠ΅Π½ΠΈΡ Π½Π° 5 ΠΏΠΎΡΠΎΠΊΠΎΠ² ΠΌΡ Π²ΠΈΠ΄ΠΈΠΌ ΡΡΠΎ 0,1 ΠΈ 2 ΠΏΠΎΡΠΎΠΊ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΡΠΈΠ»ΡΠ½ΠΎ Π·Π°ΠΏΠ°Π·Π΄ΡΠ²Π°ΡΡ, Π° Π²ΠΎΡ 3 ΠΈ 4 ΠΏΠΎΡΠΎΠΊ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ Π·Π° 16 ΠΌΡ. Π’Π°ΠΊΠΎΠ΅ Π·Π°ΠΏΠ°Π·Π΄ΡΠ²Π°Π½ΠΈΠ΅ Ρ ΡΠ²ΡΠ·ΡΠ²Π°Ρ Ρ Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΠΎΡΡΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° Π΄ΡΡΠ³ΠΈΠΌΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌΠΈ.
ΠΠ»Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ ΠΏΡΠΎΠ²Π΅Π΄Π΅ΠΌ Π΅ΡΠ΅ ΠΏΠ°ΡΡ ΡΠ΅ΡΡΠΎΠ² Ρ Π΄ΡΡΠ³ΠΈΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ ΠΏΠΎΡΠΎΠΊΠΎΠ².
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ 2.
ΠΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ 3 ΠΏΠΎΡΠΎΠΊΠΎΠ².
<ΠΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π±Π΅Π· ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΡΡΠΈ>
count 0 fixing: 0,9093 time 0 ms.
count 1 fixing: 0,9974 time 15 ms.
count 2 fixing: 0,5394 time 62 ms.
count 3 fixing: -0,9384 time 62 ms.
count 4 fixing: 0,5476 time 62 ms.
<ΠΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ c ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΡΡΠΈ>
Thread 0 <starter>
Thread 1 <starter>
Thread 0 count 0 fixing 0,9093 time 0 ms.
Thread 0 count 1 fixing 0,9974 time 0 ms.
Thread 0 count 2 fixing 0,5394 time 16 ms.
Thread 0 count 3 fixing -0,9384 time 16 ms.
Thread 0 count 4 fixing 0,5476 time 16 ms.
Thread 1 count 0 fixing 0,9093 time 0 ms.
Thread 1 count 1 fixing 0,9974 time 0 ms.
Thread 1 count 2 fixing 0,5394 time 0 ms.
Thread 1 count 3 fixing -0,9384 time 0 ms.
Thread 1 count 4 fixing 0,5476 time 16 ms.
Thread 2 <starter>
Thread 2 count 0 fixing 0,9093 time 0 ms.
Thread 2 count 1 fixing 0,9974 time 15 ms.
Thread 2 count 2 fixing 0,5394 time 15 ms.
Thread 2 count 3 fixing -0,9384 time 15 ms.
Thread 2 count 4 fixing 0,5476 time 15 ms.
Π‘ΠΎΠ³Π»Π°ΡΠ½ΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ 2. Π²ΠΈΠ΄Π½ΠΎ ΡΡΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π·Π° 62 ΠΌΡ, Π΅ΡΠ»ΠΈ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ ΡΡΠΎΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π² ΡΠ²ΡΠ·ΠΊΠ΅ Ρ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ, ΡΠΎ Π²ΠΈΠ΄Π½ΠΎ ΡΡΠΎ, ΠΎΠ΄Π½ΠΎ ΠΈ ΡΠΎ ΠΆΠ΅ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅, ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π·Π° ΡΠ°Π·Π½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ. ΠΠ°Π½Π½ΡΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π°Π΅Ρ ΡΠΎ ΡΡΠΎ Π½Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ, Π²Π»ΠΈΡΡΡ Π΄ΡΡΠ³ΠΈΠ΅ ΡΡΠΎΡΠΎΠ½Π½ΠΈΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΡ, Π° ΡΠ°ΠΊ ΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π° ΠΏΠΎΠ΄ΡΡΠ΅ΡΠ° Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ. ΠΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ Π½Π΅ ΡΠΎΠ²Π΅ΡΡΠ΅Π½ΡΡΠ²Π° ΠΌΠ΅ΡΠΎΠ΄Π° ΠΈΠ· ΡΡΠΎΠ³ΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° Π²ΠΈΠ΄Π½ΠΎ ΡΡΠΎ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΠ°Π·Π±ΠΈΠ΅Π½ΠΈΡ Π½Π° 3 ΠΏΠΎΡΠΎΠΊΠ° Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠ΅ ΡΠΊΠΎΡΠΎΡΡΠΈ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ, Π²ΡΠ΅ ΠΏΠΎΡΠΎΠΊΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π·Π°Π΄Π°ΡΡ Π·Π° 16 ΠΌΡ.
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ 3.
ΠΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ 10 ΠΏΠΎΡΠΎΠΊΠΎΠ².
<ΠΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π±Π΅Π· ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΡΡΠΈ>
count 0 fixing: 0,9093 time 0 ms.
count 1 fixing: 0,9974 time 16 ms.
count 2 fixing: 0,5394 time 16 ms.
count 3 fixing: -0,9384 time 31 ms.
count 4 fixing: 0,5476 time 31 ms.
<ΠΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ c ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΡΡΠΈ>
Thread 0 <starter>
Thread 1 <starter>
Thread 0 count 0 fixing 0,9093 time 0 ms.
Thread 0 count 1 fixing 0,9974 time 0 ms.
Thread 0 count 2 fixing 0,5394 time 0 ms.
Thread 0 count 3 fixing -0,9384 time 0 ms.
Thread 0 count 4 fixing 0,5476 time 16 ms.
Thread 1 count 0 fixing 0,9093 time 0 ms.
Thread 1 count 1 fixing 0,9974 time 0 ms.
Thread 1 count 2 fixing 0,5394 time 15 ms.
Thread 1 count 3 fixing -0,9384 time 15 ms.
Thread 1 count 4 fixing 0,5476 time 15 ms.
Thread 2 <starter>
Thread 3 <starter>
Thread 4 <starter>
Thread 5 <starter>
Thread 6 <starter>
Thread 7 <starter>
Thread 2 count 0 fixing 0,9093 time 0 ms.
Thread 2 count 1 fixing 0,9974 time 0 ms.
Thread 2 count 2 fixing 0,5394 time 0 ms.
Thread 2 count 3 fixing -0,9384 time 16 ms.
Thread 2 count 4 fixing 0,5476 time 16 ms.
Thread 3 count 0 fixing 0,9093 time 0 ms.
Thread 3 count 1 fixing 0,9974 time 0 ms.
Thread 3 count 2 fixing 0,5394 time 15 ms.
Thread 3 count 3 fixing -0,9384 time 15 ms.
Thread 3 count 4 fixing 0,5476 time 15 ms.
Thread 4 count 0 fixing 0,9093 time 0 ms.
Thread 4 count 1 fixing 0,9974 time 16 ms.
Thread 4 count 2 fixing 0,5394 time 16 ms.
Thread 4 count 3 fixing -0,9384 time 16 ms.
Thread 8 <starter>
Thread 9 <starter>
Thread 7 count 0 fixing 0,9093 time 0 ms.
Thread 7 count 1 fixing 0,9974 time 0 ms.
Thread 7 count 2 fixing 0,5394 time 0 ms.
Thread 7 count 3 fixing -0,9384 time 0 ms.
Thread 7 count 4 fixing 0,5476 time 16 ms.
Thread 6 count 0 fixing 0,9093 time 0 ms.
Thread 6 count 1 fixing 0,9974 time 16 ms.
Thread 6 count 2 fixing 0,5394 time 16 ms.
Thread 6 count 3 fixing -0,9384 time 32 ms.
Thread 6 count 4 fixing 0,5476 time 32 ms.
Thread 4 count 4 fixing 0,5476 time 63 ms.
Thread 8 count 0 fixing 0,9093 time 0 ms.
Thread 8 count 1 fixing 0,9974 time 0 ms.
Thread 8 count 2 fixing 0,5394 time 0 ms.
Thread 8 count 3 fixing -0,9384 time 16 ms.
Thread 8 count 4 fixing 0,5476 time 16 ms.
Thread 5 count 0 fixing 0,9093 time 0 ms.
Thread 5 count 1 fixing 0,9974 time 63 ms.
Thread 5 count 2 fixing 0,5394 time 79 ms.
Thread 5 count 3 fixing -0,9384 time 79 ms.
Thread 5 count 4 fixing 0,5476 time 79 ms.
Thread 9 count 0 fixing 0,9093 time 0 ms.
Thread 9 count 1 fixing 0,9974 time 0 ms.
Thread 9 count 2 fixing 0,5394 time 0 ms.
Thread 9 count 3 fixing -0,9384 time 0 ms.
Thread 9 count 4 fixing 0,5476 time 16 ms.
ΠΠ½Π°Π»ΠΈΠ·: Π‘ΠΎΠ³Π»Π°ΡΠ½ΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ 3. Π²ΠΈΠ΄Π½ΠΎ, ΡΡΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π·Π° 31 ΠΌΡ, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΠ°Π·Π±ΠΈΠ΅Π½ΠΈΡ Π½Π° 10 ΠΏΠΎΡΠΎΠΊΠΎΠ² ΠΌΡ Π²ΠΈΠ΄ΠΈΠΌ ΡΡΠΎ 4,5 ΠΈ 6 ΠΏΠΎΡΠΎΠΊ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΡΠΈΠ»ΡΠ½ΠΎ Π·Π°ΠΏΠ°Π·Π΄ΡΠ²Π°ΡΡ, Π° Π²ΠΎΡ ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ ΠΏΠΎΡΠΎΠΊΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ Π·Π° 16 ΠΌΡ ΡΡΠΎ Π³ΠΎΠ²ΠΎΡΠΈΡ ΠΎΠ± ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΌ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ.
ΠΡΠ»ΠΈ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π½Π° ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ Π°Π½Π°Π»ΠΈΠ·ΠΎΠ² ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π²ΡΠ²ΠΎΠ΄Ρ:
1. ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄ΡΡΠ³ΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΏΠΎΠ΄ΡΡΠ΅ΡΠ° Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π·Π°Π΄Π°ΡΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π±Ρ ΠΈΡΠΊΠ»ΡΡΠ°Π»ΠΈ ΠΈΠ· ΠΏΠΎΠ΄ΡΡΠ΅ΡΠ° Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠ΅ΠΌΡ ΠΎΡΠ²ΠΎΠ΄ΠΈΠΌΠΎΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠΌ Π½Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π΄ΡΡΠ³ΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ².
2. ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π±ΠΎΠ»ΡΡΠ΅Π΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ΅ΡΡΠΎΠ² Π΄Π»Ρ Π±ΠΎΠ»ΡΡΠ΅ΠΉ Π΄ΠΎΡΡΠΎΠ²Π΅ΡΠ½ΠΎΡΡΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°, Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π΄ΡΡΠ³ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈ Π±ΠΎΠ»ΡΡΠ΅Π³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ².
3. ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΡΡΡΠ°Π½ΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠ°ΠΊΡΠΎΡΡ Π΄Π»Ρ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΡ Π±ΡΡΡΡΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΡ ΡΠ°Π±Π»ΠΈΡΡ.
Π’Π°Π±Π»ΠΈΡΠ° 1.
Π€Π°ΠΊΡΠΎΡ | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅. | ΠΠ°ΠΊ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΡΡ/ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ? | Π§ΡΠΎ Π±ΡΠ»ΠΎ ΡΠ΄Π΅Π»Π°Π½ΠΎ Π΄Π»Ρ Π΅Π΅ ΡΡΡΡΠ°Π½Π΅Π½ΠΈΡ? | |
ΠΠ·Π΄Π΅ΡΠΆΠΊΠΈ Π·Π°ΠΏΡΡΠΊΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΎΠΉ ΠΏΠΎΡΠΎΠΊΠΎΠ². | ΠΠ΄Π½ΠΎΠΊΡΠ°ΡΠ½Π°Ρ ΠΈΠ·Π΄Π΅ΡΠΆΠΊΠ° ΠΏΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ ΠΊΠΎΠ΄Π°. ΠΠ΅ ΠΈΠΌΠ΅Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π΄Π»Ρ Π±ΠΎΠ»ΡΡΠ΅ΠΉ ΡΠ°ΡΡΠΈ ΠΊΠΎΠ΄Π°. ΠΠΎΠΌΠΏΠΎΠ½ΡΠ΅ΡΡΡ Ρ Π·Π°ΠΏΡΡΠΊΠΎΠΌ ΠΎΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ°ΡΡΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. | ΠΠ° ΠΏΡΠ΅Π΄Π΅Π»Π°ΠΌΠΈ ΡΠΈΠΏΠΎΠ²ΡΡ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΠΉ Π²Π½ΡΡΡΠΈ ΠΊΠΎΠ΄Π° ΡΡΠ°Π²Π½ΠΈΡΡ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Ρ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΡΠΌ. | ΠΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΌΠΎ ΠΠ΅ ΠΏΠΎΠ΄Π»Π΅ΠΆΠΈΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠΌ. | |
ΠΠ·Π΄Π΅ΡΠΆΠΊΠΈ Π·Π°ΠΏΡΡΠΊΠ° ΠΏΠΎΡΠΎΠΊΠΎΠ². | ΠΡΠ΅ΠΌΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ². ΠΠ΄Π½ΠΎΠΊΡΠ°ΡΠ½ΡΠ΅ Π·Π°ΡΡΠ°ΡΡ ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ Ρ Π³ΡΡΠΏΠΏΠΈΡΠΎΠ²ΠΊΠΎΠΉ ΠΏΠΎΡΠΎΠΊΠΎΠ². | ΠΠ·ΠΌΠ΅ΡΠΈΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΡ ΠΎΠ΄ΠΎΠ² Π²ΠΎ Π²ΡΠ΅ΠΌ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΠΌ ΠΊΠΎΠ΄Π΅; | ΠΠ»Ρ ΠΊΠΎΠΌΠΏΠ΅Π½ΡΠ°ΡΠΈΠΈ ΡΡΠΎΠΉ ΠΈΠ·Π΄Π΅ΡΠΆΠΊΠΈ ΠΏΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΏΠΎ ΠΏΠΎΡΠΎΠΊΠ°ΠΌ ΡΠΈΠΊΠ»Ρ Π±ΠΎΠ»Π΅Π΅ Π²ΡΡΠΎΠΊΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ Π΄Π»ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠΈΠΊΠ»Ρ. | |
ΠΠ·Π΄Π΅ΡΠΆΠΊΠΈ Π½Π° ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΏΠΎΡΠΎΠΊ (ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΈΠΊΠ»Π°). | ΠΡΠ΅ΠΌΡ, Π·Π°ΡΡΠ°ΡΠ΅Π½Π½ΠΎΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΎΠΉ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΡΡΠΈ Π½Π° ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π±Π»ΠΎΠΊΠΎΠ² Π·Π°Π΄Π°Ρ ΠΏΠΎ ΠΏΠΎΡΠΎΠΊΠ°ΠΌ. | ΠΡΠΎΠ²Π΅ΡΡΠΈ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ Π² ΠΊΠΎΠ΄Π΅, Π·Π°Π²ΠΈΡΡΡΠ΅ΠΌ ΠΎΡ Π±ΡΡΡΡΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ, ΠΈΠ»ΠΈ Π½Π΅ΡΠΈΠΏΠΈΡΠ½ΠΎΠΌ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊΠ΅ Π·Π°Π΄Π°Ρ; ΡΠΌ. Π½ΠΈΠΆΠ΅. | ΠΠ°ΡΡΡΠΎΠΈΡΡ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π² ΡΠ²ΠΎΠ΅ΠΌ ΠΊΠΎΠ΄Π΅; | |
ΠΠ·Π΄Π΅ΡΠΆΠΊΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΎΠΉ. | ΠΡΠ΅ΠΌΡ, ΠΏΠΎΡΡΠ°ΡΠ΅Π½Π½ΠΎΠ΅ Π½Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΎΠΉ Π² Π²Π°ΠΆΠ½ΡΡ ΡΠ°Π·Π΄Π΅Π»Π°Ρ . ΠΠ½ΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΡΠΈ ΡΡΠ°Π»ΠΎΠ½Π½ΠΎΠΌ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΈ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠΈ ΡΠ°Π·Π½ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΉ. | ΠΠΎΠ½Π°Π±Π»ΡΠ΄Π°ΡΡ Π·Π° ΡΠ°ΡΡΡΠΌΠΈ Π²ΡΠ·ΠΎΠ²Π°ΠΌΠΈ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°, ΠΊΠ°ΠΊ VTune Performance Analyzer. Π Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΡΠ»ΡΡΠ°Π΅Π² Π² ΠΊΠΎΠ΄Π΅, ΠΎΡΡΠ³ΠΎΡΠ΅Π½Π½ΠΎΠΌ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΎΠΉ, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡ Π³ΠΎΡΠ°Π·Π΄ΠΎ Π±ΠΎΠ»Π΅Π΅ ΡΠ΅ΡΡΠ΅Π·Π½ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΎΠΉ; | Π‘ΠΎΠΊΡΠ°ΡΠΈΡΠ΅ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ Π΄Π»Ρ ΡΠΎΠΊΡΠ°ΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΎΠ² Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ; | |
Π Π΄Π°Π½Π½ΠΎΠΉ ΡΠ°Π±ΠΎΡΠ΅, ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠΎΠ³Π»Π°ΡΠ½ΠΎ ΠΏΡΠ½ΠΊΡΠ°ΠΌ ΠΏΠΎ ΠΈΡΠΎΠ³Π°ΠΌ Π°Π½Π°Π»ΠΈΠ·Π° ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ², ΠΈ ΡΠ°ΠΊΡΠΎΡΠΎΠ² ΡΠΊΠ°Π·Π°Π½Π½ΡΡ Π² ΡΠ°Π±Π»ΠΈΡΠ΅ 1 Π½Π΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠ»ΠΎΡΡ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΡΠ° Π·Π°Π΄Π°ΡΠ° Π² ΠΏΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅ Π·Π°Π΄Π°ΡΠΈ Π½Π΅ ΡΡΠ°Π²ΠΈΠ»Π°ΡΡ.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΠ±ΡΠ΅ΠΊΡΠΎΠΌ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ Π² ΠΊΡΡΡΠΎΠ²ΠΎΠΉ ΡΠ°Π±ΠΎΡΠ΅ ΡΠ²Π»ΡΠ΅ΡΡΡ Π‘ΡΠ΅Π΄ΡΡΠ²Π° Java Π΄Π»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΠΉ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ.
Π¦Π΅Π»ΡΡ ΡΠ°Π±ΠΎΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ: ΠΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡΠ΅Π΄ΡΡΠ²Π° ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΠΉ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ ΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ ΠΈ ΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ Π·Π°ΠΌΠ΅Ρ ΡΠΊΠΎΡΠΎΡΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ Π΄Π»Ρ ΡΠ°Π·Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΠΏΠΎΡΠΎΠΊΠΎΠ² ΠΠ°Π½Π½Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Π°Ρ Π² ΡΡΠ΅Π΄Π΅ java eclipse Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΊΠ»Π°ΡΡΠ° java.lang.Thread, ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Runnable, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ ΠΌΠ΅ΡΠΎΠ΄ run (), Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΠ΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΠΉ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ.
ΠΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΡΠ°Π±ΠΎΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΎ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
1. ΠΡΠΎΠ²Π΅Π΄Π΅Π½ ΠΎΠ±Π·ΠΎΡ ΡΡΠ΅Π΄ΡΡΠ² ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΡΡΠΈ Π² ΡΠ·ΡΠΊΠ΅ Java.
2. ΠΠΎΡΡΡΠΎΠ΅Π½ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
3. Π‘ΠΎΠ³Π»Π°ΡΠ½ΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ Π½Π°ΠΏΠΈΡΠ°Π½ ΠΈ ΠΎΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ ΡΠ΅ΠΊΡΡ.
4. ΠΠ° ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ² ΠΏΡΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ.
ΠΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°ΠΌ ΡΠ°Π±ΠΎΡΡ Π΄Π°Π½Π½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π²ΠΈΠ΄Π½ΠΎ, ΡΡΠΎ ΠΏΡΠΈ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠΈ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΠΎΡΠΎΠΊΠΎΠ² Π²ΡΠ΅ΠΌΡ Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ ΡΠΎΠΊΡΠ°ΡΠ°Π΅ΡΡΡ, ΠΎΠ΄Π½Π°ΠΊΠΎ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΡΠΈΡΡΠ²Π°ΡΡ Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΠΎΡΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΡΠΎ Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΠ΄Π½ΠΎΠ·Π½Π°ΡΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Π²ΡΠ²ΠΎΠ΄ ΠΎΠ± ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ Π·Π°ΡΡΠ°ΡΠΈΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, Π½Π° Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ, ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΡΠ΅Π΄ΡΡΠ² ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΡΠ½ΠΎΡΡΠΈ. ΠΠ²ΠΈΠ΄Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΠΎΡΡΠΈ Π·Π°Π΄Π°Π½ΠΈΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ Π΄ΡΡΠ³ΠΈΡ ΠΊΠ»Π°ΡΡΠΎΠ² ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² Π½Π΅ Π±ΡΠ»Π° ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅Π½Π°.
Allbest.ur.