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