Если вы синхронизируете m2
, это потребует некоторых накладных расходов, поскольку при вводе m2
поток все равно должен будет получить блокировку для объекта b
(событие, если блокировка будет всегда свободной).
JVM может определить, что синхронизация избыточна, и оптимизировать ее (т. Е. Удалить synchronized
из m2
), если escape-анализ включен , Если код будет оптимизирован, разница в производительности не будет. Оптимизации, которые удаляют избыточную синхронизацию, называются блокировка elision или укрупнение блокировки .
Для получения более подробной информации об анализе побега, см. Следующую ссылку .