але мене бентежить, навіщо використовувати слово "монітор об'єкта" поряд з "замком об'єкта"?
Дивіться відповідь ulmangt на посилання, що пояснюють термін "монітор", як він використовується в цьому контексті. Зверніть увагу, що:
"Монітори були винайдені Пер Брінчем Хансеном та ЦАР Хоаром, і вперше були впроваджені мовою одночасної паскалі Брінча Хансена".
(Джерело: Вікіпедія )
Навіщо використовувати термін "монітор", а не "блокування"? Ну, строго кажучи, терміни означають різні речі ... особливо, якщо ви використовуєте їх так, як вони спочатку задумувались.
"Блокування" - це щось із примітивами придбання та вивільнення, які підтримують певні властивості блокування; напр., ексклюзивне використання або одноразове / багаторазове читання
"Монітор" - це механізм, який гарантує, що лише один потік може виконувати певний розділ (або розділи) коду в будь-який момент часу. Це може бути реалізовано за допомогою блокування (і "змінних умов", що дозволяють потокам чекати або надсилати повідомлення іншим потокам про те, що умова виконана), але це більше, ніж просто блокування. Справді, у випадку з Java фактичний замок, який використовується монітором, безпосередньо не доступний. (Ви просто не можете вимовити "Object.lock ()", щоб запобігти його отриманню іншими потоками ... як це можна зробити з Lock
екземпляром Java .)
Коротше кажучи, якщо би хтось був педантичним "монітор" - це насправді кращий термін, ніж "замок" для характеристики того, що забезпечує Java. Але на практиці обидва терміни використовуються майже як взаємозамінні.