Когда я должен использовать synchronized (OurPresident.class){}, а когда synchronized (this){}, ? Я так понимаю synchronized (Object) проверяет находиться ли указанный объект в блоке, или как ? Пожалуйста объясните мне.
Кіпень Василь
34 уровень
Задачу решил, но вопросы остались ?
Решен
Комментарии (1)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Сергеев ВикторMaster
10 ноября 2018, 17:01решение
synchronized (объект) - блокирует монитор объекта. Монитор это как флаг (свободно/занято).
Тогда вопрос в чем отличие this от OurPresident.class
this - указывает на конкретный экземпляр класса. В человеческом мире это "Я".
OurPresident.class - указывает на объект класса. У каждого класса есть объект его представляющий, в нем находится описание методов, полей и всего прочего. Это не тоже самое, что инстанс объекта. OurPresident.class - один для всех.
Получается, что this у каждого потока свой а OurPresident.class - у всех один. Поэтому если нужна блокировка общая, надо использовать класс
+20