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 Потік ще не розпочав виконання