Я рассмотрел концепцию синхронизации следующим образом: каждый объект на Java имеет монитор и блокировку. Блокировка - это объект, который может быть получен или выпущен потоком, тогда как монитор является механизмом экземпляра, который решает, может ли поток получить блокировку объекта.Очистка монитора и блокировки
Я хотел бы пояснить следующий пример. Во-первых, я хочу создать два объекта:
MyClass obj1 = new MyClass();
MyClass obj2 = new MyClass();
Будет ли каждый экземпляр имеет свой собственный монитор и замок? Или общий?
Если синхронизировать по классу:
synchronized (MyClass.class) {
...
}
Как он будет вести себя? Будет ли этот блок синхронизации получать блокировки obj1 и obj2? Если да, существует ли в Java иерархия блокировок?
Последующие действия: Какой правильный способ сказать «монитор объекта» или «блокировка объекта»?
«Будет ли реализован этот блок синхронизации блокировок obj1 и obj2». Он получает только блокировку на MyClass.class, экземпляр класса, который возвращается 'obj {1,2} .getClass() '. –
см. Это: http://stackoverflow.com/questions/14495776/synchronizethis-vs-synchronizemyclass-class, он отвечает на ваш вопрос. –
Монитор и блокировка - это одно и то же, см. Https://docs.oracle.com/javase/tutorial/essential/concurrency/locksync.html –