代码如下
package singleton;
public class SingletonTest {
public static void main(String[] args) {
Singleton1 instance1 = Singleton1.getInstance();
Singleton1 instance2 = Singleton1.getInstance();
System.out.println(instance1 == instance2);
System.out.println(instance1.hashCode());
System.out.println(instance2.hashCode());
}
}
class Singleton1{
private Singleton1(){
}
private static class Singleton2{
private static final Singleton1 INSTANCE = new Singleton1();
}
public static Singleton1 getInstance(){
return Singleton2.INSTANCE;
}
}
特点:
1.当外部类被装载的时候静态内部类并不会被装载
2.当内部类被装载的时候不会发生线程同步问题
优点:避免了线程不安全,利用静态内部类实现延迟加载,效率高
注:推荐使用