Page 140 - 4868
        P. 140
     Ошибка! Стиль не определен.                                                              138
               отримають можливість виконуватися в середовищі операційної системи з не
               витісняючою багатозадачністю.
                     Для  встановлення  пріоритету  потоку,  використовується  визначений  у
               класі  Threadметод  setPriority().  Даний  метод  в  якості  параметра
               приймає  одне  із  цілочисельних  значень,  що  визначають  рівень  пріоритету.
               Значення  рівня  знаходиться  в  межах  діапазону  від  MIN_PRIORITY  до
               МAX_PRIORITY.  В  даний  час  ці  значення  рівні  відповідно  1  та  10.  Щоб
               повернути  потоку  пріоритет  за  замовчуванням,  потрібно  вказати  рівень
               NORM_PRIORITY,  який  в  даний  час  дорівнює  значенню  5.  Дані  рівні
               пріоритету визначені в класі Threadяк змінні оголошені із модифікаторами
               staticfinal.
                     Поточне  значення  пріоритету  потоку  можна  отримати,  викликавши
               визначений  у  класі  Thread  метод  getPriority().  Різні  реалізації  JVM
               можуть  виконувати  планування  потоків  по  різному.  Найбільш  безпечний
               спосіб  отримати  передбачувану  міжплатформенну  поведінку  полягає  у
               використанні  потоків,  що  примусово  здійснюють  керування  центральним
               процесором.
                     У  випадку,  коли  два  або  більше  потоків  мають  доступ  до  спільно
               ресурсу, необхідна гарантія того, що доступ до ресурсу в конкретний момент
               часу буде мати тільки один потік. Процес виконання даної умови називається
               сінхронізацією.
                     У  мові  Java  ключем  до  синхронізації  виступає  концепція  монітора.
               Монітор у мові Java – це об’єкт, який використовується, як взаємовиключне
               блокування (mutually exclusive lock), або м’ютекс. Тільки один потік може в
               один  і  той  же  самий  час  володіти  монітором.  Коли  потік  робить  запит  на
               блокування,  то  кажуть,  що  він  входить  в  монітор.  Всі  інші  потоки,  які
               намагаються  увійти  в  заблокований  монітор,  будуть  призупинені  до  того
               часу, поки потік, що отримав блокування не покине з монітор. Про всі інші
               потоки  говорять,  що  вони  очікують  монітора.  Потік,  який  володіє
               монітором, за необхідності може повторно в нього увійти.
                     У термінології мови Java монітор володіє наступними властивостями:
                     1. Монітор – це клас, що має тільки закриті поля.
                     2. У кожного об’єкта такого класу є зв’язане з ним блокування.
                     3. Всі  методи  блокуються  даним  блокуванням.  Тобто,  якщо  клієнт
               викликає  метод  obj.method(),  блокування  об’єкта  obj  автоматично
               захоплюється  під  час  виклику  цього  методу  і  знімається  під  час  його
               завершення.  А  оскільки  всі  поля  класу  монітора  закриті,  то  такий  підхід
               гарантує, що до них не можна буде звернутися із жодного потоку доти, поки
               ними маніпулює будь-який інший потік.
                     4. Блокування може мати будь-яку кількість пов’язаних з ним умов.
                     Розробники  мови  Java  вільно  адаптували  принцип  монітора.  Кожен
               об’єкт в Java володіє вбудованим блокуванням і вбудованою умовою. Якщо
               метод оголошений із ключовим словом synchronized, то він діє як метод
               монітора.  Умовна  змінна  доступна  через  виклики  методів  wait(),
     	
