单例模式之内部类延迟加载问题
package single;
/**
* 内部类延迟加载 最佳方式
*
* @author Sunnykong
*
*/
public class Sinlge4 {
private static class SingleHolder {
private final static Sinlge4 instance = new Sinlge4();
}
public static final Sinlge4 getInstance() {
return SingleHolder.instance;
}
public static void main(String[] args) {
Sinlge4 s = Sinlge4.getInstance();
Sinlge4 s1 = Sinlge4.getInstance();
Sinlge4 s2 = Sinlge4.getInstance();
}
}
代码如上,在网上看了下很多说通过内部类延迟加载是一种最佳的方式,内部类如何实现单例的呢?我的理解是main中每次调用getInstance时,都会创建一个实例,这样就创建了三个实例了,debug了下,也的确是这样的
------解决方案--------------------getInstance 方法只是提供一个对象,虽然运行了3次 ,但是返回的是同给一个对象, 静态的变量只会被加载一次。