@MaxLich
java developer

Для чего указывается объект в блоке synchronized?

В Джаве есть такая конструкция synchronized(obj) {}. Для чего указывается некоторый объект obj в скобках? Это же используется только как метка, чтобы отделить друг от друга разные блоки синхронизации? Сам объект же не блокируется, и вне блока синхронизации с ним можно делать что угодно?
  • Вопрос задан
  • 331 просмотр
Пригласить эксперта
Ответы на вопрос 1
@etorkhov
Блок синхронизации вы используете чтобы синхронизировать действия между несколькими параллельными потоками. Чтобы синхронизация сработала, эти потоки должны получить один и тот же инстанс объекта в скобочках. Так что не метка, а инстанс объекта.
И это может быть например некоторый объект-проперти класса, тогда синхронизироваться будут только потоки в рамках одного инстанса этого класса. Т.е. разные потоки для разных инстансов в этом месте не будут синхронизироваться.
Либо статик. В последнем случае будут синхронизироваться все потоки.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы