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