静态内部类方式 静态内部类特点:1、当类进行装载的时候,静态内部类不会立即被装载。2、当方法内使用静态内部类时,会导致静态内部类装载,而且只能装载一次,线程是安全的。 它是在内部类里面去创建对象实例,只要应用中不使用内部类,JVM就不会去加载这个单例类,也就不会创建单例对象,从而实现懒汉式的延迟加载。也就是说这种方式可以同时保证延迟加载和线程安全。
public final class Singleton {
public List<String> list = null;
private Singleton() {
list = new ArrayList<String>();
}
public static class InnerSingleton {
private static Singleton instance=new Singleton();
}
public static Singleton getInstance() {
return InnerSingleton.instance;
}
}
静态内部类方式在Singleton类被装载的时候并不会立即初始化,而是需要实例化时,调用getInstance方法,才会装载InnerSingleton类,并完成Singleton的实例化。 类的静态属性只会在第一次加载类的时候初始化,所以JVM会帮助我们保证线程的安全性,在类进行初始化时,别的线程是无法进入的。
后续的再加
|