Когда объект должен быть синхронизирован, среда IDE жалуется, если она не установлена не окончательной (поскольку ее ссылка не является постоянной):
private static Object myTable;
....
synchronized(myTable){ //IDE complains!
//access myTable here...
}
Мы все знаем, что жалобы IDE жалуются на то, чтобы предотвратить включение другого потока в защищенный блок, если поток, содержащий блокировку, изменяет ссылки на неконфиденциальные объекты.
Но может ли ссылка на синхронизированный объект также быть изменена другим потоком B, в то время как поток A удерживает блокировку для одного и того же объекта?