Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Java: руководство для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… (Π›ΠŸ)Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 89

Автор Π¨ΠΈΠ»Π΄Ρ‚ Π“Π΅Ρ€Π±Π΅Ρ€Ρ‚

Если ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ suspend (), resume () ΠΈ stop () нСльзя ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для управлСния ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ, Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ, Π²ΠΎΠ·ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΈ ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΠΎΡ‚ΠΎΠΊ Π²ΠΎΠΎΠ±Ρ‰Π΅ нСльзя. Но это, ΠΊ ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, Π½Π΅ Ρ‚Π°ΠΊ. ΠŸΠΎΡ‚ΠΎΠΊ слСдуСт Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ run () пСриодичСски ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΠ»Π°ΡΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°, слСдуСт Π»ΠΈ ΠΏΡ€ΠΈΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ, Π²ΠΎΠ·ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΠΎΡ‚ΠΎΠΊ. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ для этой Ρ†Π΅Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π΄Π²Π΅ Ρ„Π»Π°Π³ΠΎΠ²Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅: ΠΎΠ΄Π½Π° β€” для приостановки ΠΈ возобновлСния ΠΏΠΎΡ‚ΠΎΠΊΠ°, другая β€” для остановки ΠΏΠΎΡ‚ΠΎΠΊΠ°. Если флаговая пСрСмСнная, ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰Π°Ρ приостановкой ΠΏΠΎΡ‚ΠΎΠΊΠ°, установлСна Π² состояниС исполнСния, Ρ‚ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ run () Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ исполнСния ΠΏΠΎΡ‚ΠΎΠΊΠ°. Если ΠΆΠ΅ эта флаговая пСрСмСнная находится Π² состоянии приостановки, Π² Ρ€Π°Π±ΠΎΡ‚Π΅ ΠΏΠΎΡ‚ΠΎΠΊΠ° Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΡ‚ΠΈ ΠΏΠ°ΡƒΠ·Π°. А Ссли пСрСмСнная, ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰Π°Ρ остановкой ΠΏΠΎΡ‚ΠΎΠΊΠ°, находится Π² состоянии остановки, исполнСниС ΠΏΠΎΡ‚ΠΎΠΊΠ° Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ дСмонстрируСт ΠΎΠ΄ΠΈΠ½ ΠΈΠ· способов Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ собствСнных вСрсий ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² suspend (), resume () ΠΈ stop ().// ΠŸΡ€ΠΈΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ°, Π²ΠΎΠ·ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΈ остановка ΠΏΠΎΡ‚ΠΎΠΊΠ°.class MyThread implements Runnable { Thread thrd; // Если эта пСрСмСнная ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ логичСскоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ // true, исполнСниС ΠΏΠΎΡ‚ΠΎΠΊΠ° приостанавливаСтся. volatile boolean suspended; // Если эта пСрСмСнная ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ логичСскоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ // true, исполнСниС ΠΏΠΎΡ‚ΠΎΠΊΠ° прСкращаСтся. volatile boolean stopped; MyThread(String name) { thrd = new Thread(this, name); suspended = false; stopped = false; thrd.start(); } // Π’ΠΎΡ‡ΠΊΠ° Π²Ρ…ΠΎΠ΄Π° Π² ΠΏΠΎΡ‚ΠΎΠΊ public void run() { System.out.println(thrd.getName() + " starting."); try { for(int i = 1; i < 1000; i++) { System.out.print(i + " "); if((i %10)==0) { System.out.println() ; Thread.sleep(250) ; } // Для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ условий приостановки ΠΈ остановки ΠΏΠΎΡ‚ΠΎΠΊΠ° // ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ слСдуТхций синхронизированный Π±Π»ΠΎΠΊ. synchronized(this) { while(suspended) { wait(); } if(stopped) break; } } } catch (InterruptedException exc) { System.out.println(thrd.getName() + " interrupted."); } System.out.println(thrd.getName() + " exiting."); } // ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΠΎΡ‚ΠΎΠΊ synchronized void mystopO { stopped = true; // Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ ΠΏΠΎΠ»Π½ΡƒΡŽ // остановку приостановлСнного ΠΏΠΎΡ‚ΠΎΠΊΠ°, suspended = false; notify(); } // ΠΏΡ€ΠΈΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΠΎΡ‚ΠΎΠΊ synchronized void mysuspend() { suspended = true; } // Π²ΠΎΠ·ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΠΎΡ‚ΠΎΠΊ synchronized void myresume() { suspended = false; notify(); }}class Suspend { public static void main(String args[]) { MyThread obi = new MyThread("My Thread"); try { Thread.sleep(1000); // ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ΡŒ ΠΏΠΎΡ‚ΠΎΠΊΡƒ ΠΎΠ« Π½Π°Ρ‡Π°Ρ‚ΡŒ исполнСниС obi.mysuspend(); System.out.println("Suspending thread."); Thread.sleep(1000); obi.myresume(); System.out.println("Resuming thread."); Thread.sleep(1000); obi.mysuspend(); System.out.println("Suspending thread."); Thread.sleep(1000); obi.myresume(); System.out.println("Resuming thread.") ; Thread.sleep(1000); obi.mysuspend() ; System.out.println("Stopping thread."); obi.mystop(); } catch (InterruptedException e) { System.out.println("Main thread Interrupted"); } // ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ ΠΏΠΎΡ‚ΠΎΠΊΠ° try { obi.thrd.join() ; } catch (InterruptedException e) { System.out.println("Main thread Interrupted"); } System.out.println("Main thread exiting."); }}

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния Π΄Π°Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.My Thread starting.123456789 1011 12 13 14 15 16 17 18 19 2021 22 23 24 25 26 27 28 29 3031 32 33 34 35 36 37 38 39 40Suspending thread.Resuming thread.41 42 43 44 45 46 47 48 49 5051 52 53 54 55 56 57 58 59 6061 62 63 64 65 66 67 68 69 7071 72 73 74 75 76 77 78 79 80Suspending thread.Resuming thread.81 82 83 84 85 86 87 88 89 9091 92 93 94 95 96 97 98 99 100101 102 103 104 105 106 107 108 109 110111 112 113 114 115 116 117 118 119 120Stopping thread.My Thread exiting.Main thread exiting.

Π­Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ. Π’ классС ΠΏΠΎΡ‚ΠΎΠΊΠ° MyThread ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ Π΄Π²Π΅ логичСскиС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, suspended ΠΈ stopped, ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈ ΠΏΠΎΠ»Π½ΠΎΠΉ остановкой ΠΏΠΎΡ‚ΠΎΠΊΠ°. Π’ конструкторС этого класса ΠΎΠ±Π΅ΠΈΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ присваиваСтся логичСскоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ false. ΠœΠ΅Ρ‚ΠΎΠ΄ run () содСрТит синхронизированный Π±Π»ΠΎΠΊ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ провСряСтся состояниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ suspended. Если эта пСрСмСнная принимаСтлогичСскоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ true, вызываСтся ΠΌΠ΅Ρ‚ΠΎΠ΄ wait (), ΠΏΡ€ΠΈΠΎΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ исполнСниС ΠΏΠΎΡ‚ΠΎΠΊΠ°. ЛогичСскоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ true присваиваСтся ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ suspended Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ mysuspend (), ΠΈ поэтому Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ слСдуСт Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ для приостановки ΠΏΠΎΡ‚ΠΎΠΊΠ°. Для возобновлСния ΠΏΠΎΡ‚ΠΎΠΊΠ° слуТит ΠΌΠ΅Ρ‚ΠΎΠ΄ myresume (), Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ suspended присваиваСтся логичСскоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ false ΠΈ вызываСтся ΠΌΠ΅Ρ‚ΠΎΠ΄ not if Ρƒ ().

Для остановки ΠΏΠΎΡ‚ΠΎΠΊΠ° слСдуСт Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ my stop (), Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ stopped присваиваСтся логичСскоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ true. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ mystop () ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ suspended присваиваСтся логичСскоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ false ΠΈ вызываСтся ΠΌΠ΅Ρ‚ΠΎΠ΄ notify (). Π­Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ для прСкращСния Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΠΎΡ‚ΠΎΠΊΠ°, исполнСниС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Ρ€Π°Π½Π΅Π΅ Π±Ρ‹Π»ΠΎ приостановлСно.

Π’ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ рассматриваСмой здСсь ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΠ΄Π½ΠΎ, послСднСС Π·Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅. Π’ объявлСнии ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… suspended ΠΈ stopped ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово volatile. Π­Ρ‚ΠΎΡ‚ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ описываСтся Π² Π³Π»Π°Π²Π΅ 14, Π° Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€ Π²ΠΊΡ€Π°Ρ‚Ρ†Π΅ поясним Π΅Π³ΠΎ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Он сообщаСт компилятору ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ частями ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π² Ρ‚ΠΎΠΌ числС ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠΌ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ для опробования 11.2.ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ основного ΠΏΠΎΡ‚ΠΎΠΊΠ°

Π’ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π½Π° Java присутствуСт хотя Π±Ρ‹ ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΡ‚ΠΎΠΊ, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ основным. Π­Ρ‚ΠΎΡ‚ ΠΏΠΎΡ‚ΠΎΠΊ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ автоматичСски ΠΏΡ€ΠΈ запускС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅. Π’ этом ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Π±ΡƒΠ΄Π΅Ρ‚ продСмонстрировано, Ρ‡Ρ‚ΠΎ основным ΠΏΠΎΡ‚ΠΎΠΊΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Π»ΡŽΠ±Ρ‹ΠΌ Π΄Ρ€ΡƒΠ³ΠΈΠΌ.

ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ дСйствий

Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Ρ„Π°ΠΉΠ» UseMain.java.

Для доступа ΠΊ основному ΠΏΠΎΡ‚ΠΎΠΊΡƒ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΡΡΡ‹Π»Π°ΡŽΡ‰ΠΈΠΉΡΡ Π½Π° Π½Π΅Π³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ‚ΠΈΠΏΠ° Thread. Для этого слСдуСт Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ currentThread (), ΡΠ²Π»ΡΡŽΡ‰ΠΈΠΉΡΡ статичСским Ρ‡Π»Π΅Π½ΠΎΠΌ класса Thread. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΎ объявлСниС этого ΠΌΠ΅Ρ‚ΠΎΠ΄Π°. static Thread currentThread() ΠœΠ΅Ρ‚ΠΎΠ΄ currentThread () Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ссылку Π½Π° Ρ‚ΠΎΡ‚ ΠΏΠΎΡ‚ΠΎΠΊ, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΎΠ½ вызываСтся. Π’Π°ΠΊ, Ссли Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ currentThread () ΠΈΠ· основного ΠΏΠΎΡ‚ΠΎΠΊΠ°, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ссылку Π½Π° этот ΠΏΠΎΡ‚ΠΎΠΊ. А имСя ссылку Π½Π° основной ΠΏΠΎΡ‚ΠΎΠΊ, ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΈΠΌ.

Π’Π²Π΅Π΄ΠΈΡ‚Π΅ Π² Ρ„Π°ΠΉΠ» UseMain. j ava ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π½ΠΈΠΆΠ΅ исходный ΠΊΠΎΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π’ процСссС Π΅Π΅ выполнСния сначала извлСкаСтся ссылка Π½Π° основной ΠΏΠΎΡ‚ΠΎΠΊ, Π·Π°Ρ‚Π΅ΠΌ опрСдСляСтся ΠΈ устанавливаСтся имя ΠΈ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ ΠΏΠΎΡ‚ΠΎΠΊΠ°. /* ΠŸΡ€ΠΈΠΌΠ΅Ρ€ для опробования 11.2. Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ основным ΠΏΠΎΡ‚ΠΎΠΊΠΎΠΌ. */ class UseMain { public static void main(String args[]) { Thread thrd; // ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ основной ΠΏΠΎΡ‚ΠΎΠΊ thrd = Thread.currentThread(); // ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ имя основного ΠΏΠΎΡ‚ΠΎΠΊΠ° System.out.println("Main thread is called: " + thrd.getName()); // ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ основного ΠΏΠΎΡ‚ΠΎΠΊΠ° System.out.println("Priority: " + thrd.getPriority()); System.out.println(); // ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ имя ΠΈ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ основного ΠΏΠΎΡ‚ΠΎΠΊΠ° System.out.println("Setting name and priority.\n"); thrd.setName("Thread #1"); thrd.setPriority(Thread.NORM_PRI0RITY+3); System.out.println("Main thread is now called: " + thrd.getName()); System.out.println("Priority is now: " + thrd.getPriority()); } }

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния Π΄Π°Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Main thread is called: main Priority: 5 Setting name and priority. Main thread is now called: Thread #1 Priority is now: 8

Выполняя ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π°Π΄ основным ΠΏΠΎΡ‚ΠΎΠΊΠΎΠΌ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ±Π»ΡŽΠ΄Π°Ρ‚ΡŒ ΠΎΡΡ‚ΠΎΡ€ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ. Π’Π°ΠΊ, Ссли Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² ΠΊΠΎΠ½Ρ†Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° main () ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π½ΠΈΠΆΠ΅ ΠΊΠΎΠ΄, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡΡ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ основного ΠΏΠΎΡ‚ΠΎΠΊΠ°!try { thrd.join();} catch(InterruptedException exc) { System.out.println("Interrupted");}Π£ΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ для самопровСрки ΠΏΠΎ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρƒ Π³Π»Π°Π²Ρ‹ 11

Каким ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠ΅ΡΡ Π² Java срСдства ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ программирования ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΏΠΈΡΠ°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ эффСктивныС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹?