Объясните пожалуйста что такое Монитор? Двое суток сижу уже с этим вопросом. Читал Cuncurrency in Practice , там говорят
- монитор это НЕ объект,это КОНЦЕПЦИЯ монопольного доступа к синхронизированному ресурсу
- гуглю, везде мнения расходятся, ктото говорит - это ОБЪЕКТ,который указан в блоке синхронизации synshronized(new Объект)
- ктото говорит это КАКАЯ то НАДСТРОЙКА НАД МЮТЕКСОМ,и нигде толком нет внятного ответа
Читал статьи на JR , их я не понялДмитрий
46 уровень
Что такое МОНИТОР в java? какой то объект?//или надстройка над мютекстом(те не объект)//какая-то эфимерная КОНЦЕПЦИЯ ?
Обсуждается
getClass()). Не статические synchronized блоки и методы используют мониторы ассоциированные с соответствующими экземплярами класса.Там всё сложно.Оказывается не настолько сложно. Пройдите по ссылкам, которые выше дал @Виктор. Монитор не обязательно создаётся вместе с Java-объектом. Насколько я смог понять из доклада Алексея Шипилёва о ShenandoahGC, монитора может вообще не быть, может быть в "облегчённом" виде, а может быть и соответствующая обёртка над примитивом ОС. Зависит от многих факторов, и меняется прямо в процессе работы. Но с точки зрения Java-программиста, монитор - это некоторая концепция, механизм синхронизации, детали реализации которого программиста касаться не должны. То о чём следует помнить на практике - это то, что этот механизм относительно медленный и его лучше избегать. В идеале, добиться отказа от блокировок с помощью механизмов неблокирующей синхронизации, а если и использовать блокировки, то только те, что предоставляются инструментами пакета java.util.concurrent, так как они быстрее чем встроенный в язык механизм.