Page 137 - 4868
P. 137

135                                                              Ошибка! Стиль не определен.

               частині програми:

                     void myMethod() {
                       try {
                         sleep(delay);
                       } catch (InterruptedException e) {
                         Thread.currentThread().Interrupt();
                       }
                     }

                     2. Прописати  throws InterruptedException  в  сигнатурі  методу  та
               видалити блок try / catch, і тоді дане переривання може бути перехоплене у
               викликаючій частині програми (або в крайньому випадку в методі run()):

                     void myMethod() throws InterruptedException {
                       sleep(delay);
                     }

                     Запитання для самоперевірки

                     1. У  чому  проявляється  вбудована  підтримка  багатопотоковості  у  мові
               Java?
                     2. Що собою представляє модель циклу подій з опитуванням?
                     3. У  чому  полягає  перевага  багатопотокової  моделі  в  порівнянні  із
               моделлю на основі циклу подій?
                     4. В  яких  станах  можуть  перебувати  потоки  у  програмі  написаній  на
               мові Java?
                     5. Яку функціональну роль відіграє головний потік у мові Java?
                     6. Як  призупинити  виконання  потоку  у  мові  Java  на  вказану  кількість
               мілісекунд?
                     7. Які існують способи створення нового потоку засобами мови Java?
                     8. Для  чого  необхідно  перевизначати  метод  run()  і  яке  його
               призначення?
                     9. У  якому  випадку  відбувається  переривання  потоку  у  програмі
               написаній на мові Java?
                     10. Яким  чином  у  мові  Java  можна  керувати  процесом  переривання
               потоку?



                           ЛЕКЦІЯ 19. КЕРУВАННЯ ЖИТТЄВИМ ЦИКЛОМ ТА
                                                  СИНХРОНІЗАЦІЯ



                     19.1. Використання методів isAlive() та join()
                     Як  уже  було  згадано,  найчастіше  необхідно,  щоб  головний  потік

               завершувався  останнім.  У  попередніх  прикладах  з  методу  main()
               виконувався виклик методу sleep()із затримкою, достатньою для того, щоб
               гарантувати,  що  всі  дочірні  потоки  завершаться  раніше  головного.  Однак
               дане  рішення  породжує  наступне  питання:  як  один  потік  може  знати  про
   132   133   134   135   136   137   138   139   140   141   142