Page 130 - 4868
P. 130

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

                             Thread.sleep(2000);
                           }
                         } catch(InterruptedException e) {
                           System.out.println("Головний потік перерваний");
                         }
                       }
                     }

                     У  представленій  програмі  посилання  на  поточний  (головний)  потік
               отримується,  шляхом  виклику  методу  currentThread(),  після  чого  дане

               посилання  зберігається  в  локальній  змінній  thread.  Далі  програма
               відображає  інформацію  про  потік.  У  програмі  викликається  метод
               setName()для зміни внутрішнього імені потоку. Після цього інформація про
               потік  відображається  заново.  У  циклі  виводяться  цифри  із  затримкою  в  2
               секунди. Для цього виконується виклик методу sleep(). Аргумент методу
               sleep()  задає  період  затримки  в  мілісекундах.  Цикл  у  свою  чергу
               виконується у блоці try / catch, оскільки метод sleep() визначений в класі
               Thread  може  генерувати  виняток  InterruptException  у  випадку,  якщо
               деякий інший потік захоче перервати його виконання. У випадку, якщо потік
               буде  перервано,  на  екран  за  допомогою  методу  println()  виведеться
               відповідне повідомлення У реальних програмах об’єкт винятку повинен бути
               обов’язково перехоплений та оброблений.
                     За замовчуванням ім’я головного потоку та ім’я групи потоків, до якої
               він  належить  –  main,  а  його  пріоритет  дорівнює  5.  Група  потоків  –  це
               структура даних, яка управляє станом множини потоків в цілому. Після того
               як  ім’я  потоку  змінено,  значення  змінної  thread  виводиться  знову.  Цього
               разу відображається нове ім’я потоку.
                     Метод sleep() змушує потік, з якого він був викликаний, призупинити
               виконання на вказану кількість мілісекунд. Також метод  sleep() дозволяє
               задати  період  затримки  в  мілісекундах  і  наносекундах,  проте  дана  форма
               може  застосовуватися  тільки  в  середовищах,  які  передбачають  задання
               часових проміжків в наносекундах.
                     Як уже зазначалося, потік може перебувати  в декількох різних станах.
               Поточний  стан  потоку  можна  отримати,  викликавши  метод  getState(),
               визначений у класі Thread. Метод повертає значення типу Thread.State,
               яке  вказує  на  стан  потоку  в  момент  його  виклику.  Перерахування  State

               визначене  в  класі  Thread  і  в  ньому  містяться  значення  перераховані  в
               таблиці 2.1.

                     Таблиця 2.1 – Значення, що повертаються методомgetState()
                       Значення                                          Стан
                                            Потік  призупинив  виконання,  оскільки  очікує
                       BLOCKED
                                            отримання блокування
                          NEW               Потік ще не розпочав виконання
   125   126   127   128   129   130   131   132   133   134   135