【发布时间】:2019-11-27 10:26:39
【问题描述】:
我正处于一个实现之间,我计划在静态内部类中使用静态块。
此实现是作为单例类延迟初始化的一部分完成的。
如果这样做是可取的或良好的做法,我无法在 google 上找到任何信息?
欢迎提出任何建议。
public class MySingleton {
private MySingleton() {
}
private static class InnerMySingleton {
private static volatile MySingleton mysingleton;
static {
mysingleton = new MySingleton();
}
}
public static MySingleton getInstance() {
return MySingleton.InnerMySingleton.mysingleton;
}
}
【问题讨论】:
-
这是Initialization-on-demand holder idiom,你可以这样做
private static final MySingleton mysingleton = new MySingleton(); -
@michalk 嗯,它是一个复杂的对象,创建它不是实际的代码,而是一个基本的原型。创建实际对象涉及很多步骤。
标签: java multithreading design-patterns singleton