Page 176 - 6571
P. 176
інших факторів, окрім його пріоритету (наприклад, від того, як
операційна система реалізує багатозадачність, може залежати
відносна доступність процесорного часу) Високопріоритетний
потік має змогу також переривати роботу низькопріоритетного.
Наприклад, коли низькопріоритетний потік виконується, а
високопріоритетний збирається продовжити своє перерване
виконання (у зв’язку із призупиненням або очікуванням
завершення операції введення-виведення), то він вивантажує
низькопріоритетний потік.
Теоретично потоки з однаковим пріоритетом повинні
отримувати однаковий доступ до центрального процесора. Але
оскільки мова Java спроектована для роботи в широкому спектрі
середовищ, то деякі з низ мають свій принцип реалізації
багатозадачності. Наприклад, в операційній системі Windows
передбачено сім рівнів пріоритетів. А у віртуальній машині
Oracle для Linux пріоритети потоків взагалі ігноруються.
З метою безпеки, потоки з однаковим пріоритетом повинні
отримувати однаковий доступ до центрального процесора. Це
гарантує, що всі потоки отримають можливість виконуватися в
середовищі операційної системи з не витісняючою
багатозадачністю.
Для встановлення пріоритету потоку, використовується
визначений у класі Thread метод setPriority(). Даний метод
в якості параметра приймає одне із цілочисельних значень, що
визначають рівень пріоритету. Значення рівня знаходиться в
межах діапазону від MIN_PRIORITY до МAX_PRIORITY. В даний
час ці значення рівні відповідно 1 та 10. Щоб повернути потоку
пріоритет за замовчуванням, потрібно вказати рівень
NORM_PRIORITY, який в даний час дорівнює значенню 5. Дані
рівні пріоритету визначені в класі Thread як змінні оголошені із
модифікаторами static final.
Поточне значення пріоритету потоку можна отримати,
викликавши визначений у класі Thread метод getPriority().
Різні реалізації JVM можуть виконувати планування потоків по
різному. Найбільш безпечний спосіб отримати передбачувану
міжплатформенну поведінку полягає у використанні потоків, що
примусово здійснюють керування центральним процесором.
175