Я не знаю, слышал ли я это утверждение. Конечно, было бы плохо переназначить lockObject
(потому что тогда вы бы заблокировали другой объект в другом месте), но я не вижу ничего плохого в его мутировании.
Кроме того, довольно распространенным является метод synchronized
, который мутирует объект:
public synchronized void setSomething(int something) {
this.something = something;
}
В этом случае сам объект используется в качестве блокировки. Какой смысл в синхронизации на отдельном объекте?