Задать вопрос
@MaxLich
java developer

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

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

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

Похожие вопросы