思想:
这一种单例模式的实现,我本来并不准备单独提出来,因为我认为这种模式,和饿汉模式,没有本质的区别。
但是在 sun.misc.Unsafe 的源码中却实际应用到了这种设计,所以才特地介绍一下。
简单的说,就是把初始化的工作,放到静态代码块中。
由于初始化的时间比饿汉模式更加早,我有个同事把它称之为:难民模式。
1 public final class StaticBlockSingleton { 2 3 private static final StaticBlockSingleton instance; 4 5 private StaticBlockSingleton() { 6 if (instance != null) { 7 throw new IllegalStateException(); 8 } 9 } 10 11 static { 12 instance = new StaticBlockSingleton(); 13 } 14 15 public static final StaticBlockSingleton getInstance() { 16 return instance; 17 } 18 19 }
静态代码块模式
与饿汉模式相同,不存在多线程及反射打破单例的可能性。
时间: 2024-10-02 02:09:19