Я смотрю на некоторый код в нашем приложении, который, как мне кажется, может встретить случай " Двойная проверка блокировки " Я написал пример кода, который похож на то, что мы делаем.
Может кто-нибудь увидеть, как это может происходить с двойной проверкой блокировки? Или это безопасно?
class Foo {
private Helper helper = null;
public Helper getHelper() {
Helper result;
synchronized(this) {
result = helper;
}
if (helper == null) {
synchronized(this) {
if (helper == null) {
helper = new Helper();
}
}
}
return helper;
}
}
Базовый код заимствован из вики .