Это совершенно не имеет значения с любой точки зрения эффективности.
Смысл наличия блоков в том, что вы можете указать свой собственный замок.Вы можете выбрать блокировку, инкапсулированную в объекте, в отличие от использования this
, в результате чего у вас будет больше контроля над тем, кто может получить блокировку (поскольку вы можете сделать эту блокировку недоступной извне вашего объекта).
Если вы используете this
в качестве блокировки (независимо от того, ставите ли вы синхронизированный метод или используете блок), все, что в вашей программе может получить блокировку вашего объекта, и гораздо сложнее рассуждать о том, что вы делаете.программа делает.
Ограничение доступа к блокировке дает вам огромный выигрыш в разрешимости, гораздо полезнее иметь такую уверенность, чем где-то сбрить байт-код.