我已经阅读了“双重检查锁定是错误的”声明。但我想知道如果我通过一个函数创建对象,那么是否可以?
class Foo {
private Helper helper = null;
public Helper getHelper() {
if (helper == null)
synchronized(this) {
if (helper == null)
helper = createHelper();
}
return helper;
}
private Helper createHelper() {
return new Helper();
}
// other functions and members...
}