上文中我们讲到锁加双重null判断
但实际上。那种写法也太复杂,只不过是相对于饿汉懒汉优化的最好版本
而大家都觉得最完美的一种方式
是静态内部类方式
package com.yzdzy.design.singleton;
/**
* 静态内部类方式(最完美的)
* JVM保证单例
* 加载外部类时不会加载内部类,这样可以实现懒加载
* 比双重判断单例还要更好一点
*/
public class Mgr07 {
private Mgr07() {
}
//定义静态内部类
private static class Mgr07Holder{
//内部才可以访问
private final static Mgr07 mInstance=new Mgr07();
}
public static Mgr07 getInstance(){
return Mgr07Holder.mInstance;
}
public void m() {
System.out.println("m");
}
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
new Thread(() -> {
System.out.println(Mgr07.getInstance().hashCode());
}).start();
}
}
}
> Task :Mgr07.main()
662136803
662136803
662136803
662136803
662136803
662136803
662136803
662136803
662136803
662136803