Предупреждение отображается каждый раз, когда я синхронизируюсь в поле не конечного класса. Вот код:
public class X
{
private Object o;
public void setO(Object o)
{
this.o = o;
}
public void x()
{
synchronized (o) // synchronization on a non-final field
{
}
}
}
поэтому я изменил кодировку следующим образом.
public class X
{
private final Object o;
public X()
{
o = new Object();
}
public void x()
{
synchronized (o)
{
}
}
}
Я не уверен, что приведенный выше код - это правильный способ синхронизации в поле не конечного класса. Как синхронизировать не окончательное поле?