Page 186 - 6571
P. 186
4. З якою метою проводиться зміна пріоритету потоку?
5. Як встановити пріоритет потоку засобами мови Java?
6. Скільки рівнів пріоритетів потоку визначено у мові Java?
7. Який рівень пріоритету мають потоки у мові Java по
замовчуванню?
8. Якими властивостями володіє монітор у термінології мови
Java?
9. Які у мові Java використовуються механізми захисту
критичної секції коду від паралельного доступу?
10. Який вид блокування називається реентерабельним?
ЛЕКЦІЯ 20
ВБУДОВАНІ МЕТОДИ СИНХРОНІЗАЦІЇ ПОТОКІВ
20.1 Використання ключового словаsynchronized
Інтерфейси Lock та Condition надають розробникам високу
ступінь контролю над блокуваннями. Але найчастіше такий
контроль є зайвим, і зазвичай буває достатньо механізму
синхронізації, вбудованого в мову Java.
Процес синхронізації в мові Java є досить простим, оскільки
усі об’єкти володіють власними, асоційованими з ними неявними
моніторами. Щоб увійти в монітор об’єкта, необхідно просто
викликати метод, модифікований ключовим словом
synchronized. Коли потік знаходиться всередині
синхронізованого методу, то всі інші потоки, які намагаються
його викликати з того ж екземпляру класу переводяться в режим
очікування. Щоб вийти з монітора і передати керування об’єктом
іншому заблокованому потоку, «власник» монітора просто
повертає керування із синхронізованого методу.
Якщо метод оголошений з ключовим словом synchronized,
то блокування об’єкта захищає весь метод. Отже, щоб викликати
метод позначений ключовим словом synchronized, потік
повинен захопити вбудоване блокування об’єкта. Іншими
словами, наступний фрагмент коду:
public synchronized void method() {
тіло методу;
}
185