Page 249 - 6571
P. 249
синхронізованих методів. Більше того, клас був написаний
стороннім розробником і у нас немає доступу до його вихідного
коду. Отже, додати слово synchronized до оголошення
відповідних методів класу не можливо. Проте, існує досить про-
сте рішення даної проблеми, що полягає у виклику методів тако-
го класу в блоці позначеного ключовим словом synchronized.
Коли потік входить у блок позначений словом synchronized,
то він захоплює блокування об’єкта.
synchronized(bank) {
// критична секція коду в якій використовується
об’єкт bank
}
Вбудованим блокуванням притаманні деякі обмеження, в то-
му числі наведені нижче:
1. Не можливо перервати потік, який намагається захопити
блокування.
2. Не можливо вказати час очікування, намагаючись захопити
блокування.
Що ж все-таки краще використовувати: об’єкти типу Lock
чи синхронізовані методи? Нижче наведені деякі рекомендації,
які дають відповідь на це питання:
1. Якщо для розв’язання конкретної задачі підходить ключо-
ве слово synchronized, то його неодмінно потрібно викори-
стати. У даному випадку доведеться написати набагато менше
коду, а отже, допустити менше помилок.
2. Об’єкти типу Lock необхідно використовувати тільки у
тому випадку, якщо дійсно потрібні додаткові механізми керу-
вання процесом синхронізації.
3.2 Порядок виконання роботи
1. Ознайомитися із теоретичними відомостями до лаборатор-
ної роботи.
2. Відкомпілювати і запустити на виконання програму в якій
імітується робота банку з декількома рахунками, що подана
нижче.
3. На основі результатів роботи поданої нижче програми зро-
бити висновки про її коректність.
248