Ключевое слово synchronized является утверждением, которое в круглых скобках принимает выражение, возвращающее ссылку на объект. Поэтому его не нужно путать с методом, принимающим один параметр. И то, что используется в скобках - относится к самому утверждению, а не блоку кода, для которого это утверждение работает. Как и в любом другом блоке кода вы можете использовать ссылку на любой объект, если он доступен в области видимости, которая охватывает этот блок. Поэтому какую ссылку вы используете в утверждении synchronized, не имеет отношения к тому, будете ли вы ее использовать в блоке кода или нет.
Вот, что по этому сказано в JLS:
Утверждение synchronized получает блокировку взаимного исключения
(§17.1) от имени исполняющего потока, выполняет блок, а затем
освобождает блокировку. Пока исполняющий поток владеет блокировкой, ни
один другой поток не может получить блокировку.
SynchronizedStatement:
synchronized ( Expression ) Block
Тип выражения должен быть ссылочным типом, или возникает ошибка
времени компиляции.
И наконец, методы wait(), notify(), и notifyAll() принадлежат классу Object. Поэтому вы можете использовать их в любом классе, вы также можете использовать ссылку на объект, для вызовов этих методов из этого объекта, имеющего эту ссылку. Так как впрочем все унаследованные методы доступны в классе без использования ссылки. Ссылка this указывает на этот объект, поэтому ее указывать необязательно для вызовов наследуемых методов, в то время как для других объектов это необходимо. Поток тоже является объектом, потому, что создается из класса Thread, поэтому если методы вызываются внутри класса, то принадлежат ему.