Page 239 - 6253
P. 239

потік.  У  програмі  викликається  метод  setName()для  зміни  внутрішнього  імені

            потоку.  Після  цього  інформація  про  потік  відображається  заново.  У  циклі

            виводяться цифри із затримкою в 2 секунди. Для цього виконується виклик методу

            sleep(). Аргумент методу sleep() задає період затримки в мілісекундах. Цикл у свою

            чергу  виконується  у  блоці  try / catch,  оскільки  метод  sleep()  визначений  в  класі

            Thread може генерувати  виняток  InterruptException  у випадку, якщо деякий  інший

            потік захоче перервати його виконання. У випадку, якщо потік буде перервано, на

            екран за допомогою методу println() виведеться відповідне повідомлення У реальних

            програмах об’єкт винятку повинен бути обов’язково перехоплений та оброблений.

                  За  замовчуванням  ім’я  головного  потоку  та  ім’я  групи  потоків,  до  якої  він

            належить – main, а його пріоритет дорівнює 5. Група потоків – це структура даних,

            яка управляє станом множини потоків в цілому. Після того як ім’я потоку змінено,

            значення  змінної  thread  виводиться  знову.  Цього  разу  відображається  нове  ім’я

            потоку.

                  Метод  sleep()  змушує  потік,  з  якого  він  був  викликаний,  призупинити

            виконання  на  вказану  кількість  мілісекунд.  Також  метод  sleep()  дозволяє  задати

            період  затримки  в  мілісекундах  і  наносекундах,  проте  дана  форма  може

            застосовуватися тільки в середовищах, які передбачають задання часових проміжків

            в наносекундах.

                  Як  уже  зазначалося,  потік  може  перебувати  в  декількох  різних  станах.

            Поточний стан потоку можна отримати, викликавши метод getState(), визначений у

            класі Thread. Метод повертає значення типу Thread.State, яке вказує на стан потоку в

            момент  його  виклику.  Перерахування  State  визначене  в  класі  Thread  і  в  ньому

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


                                   Таблиця 10.1 – Значення, що повертаються методом getState()

                      Значення                                           Стан
                     BLOCKED              Потік призупинив виконання, оскільки очікує отримання блокування

                       NEW                Потік ще не розпочав виконання
                                          Потік в даний час виконується або почне виконуватися, коли отримає
                    RUNNABLE
                                          доступ до процесора
                   TERMINATED             Потік закінчив виконання
                 TIMED WAITING            Потік  призупинив  виконання  на  певний  проміжок  часу,  наприклад,




                                                              238
   234   235   236   237   238   239   240   241   242   243   244