См. этот ответ. В нем говорится:
Шесть действительно плохих примеров;
...
блокировка изменяемого поля. например синхронизированный (объект) { объект = ...; }
Что плохого в блокировке изменяемого поля? Что, если объект
был объявлен как final
, но не был неизменяемым классом?