当需要一个单例时,静态字段是一个优雅的解决方案吗?
class HelperSingleton {
static Helper singleton = new Helper();
public static Helper getInstance() {
return singleton;
}
}
当两个线程同时访问getInstance
时,该字段singleton
是否有可能没有完全初始化?或者查看辅助对象字段的默认值,而不是构造函数中设置的值?静态单例也是懒初始化?
我的意思是,
static Helper singleton = new Helper();
这个分配是原子的吗?并且不会返回默认值?