原文: Gerrard_Feng
思想:
这种静态代码块模式,本质上是饿汉模式的一个变种。
它将类的静态 Field 的初始化,转移到静态代码块中(这么做的优势尚不明确)。
在 JDK 源码中有一个具体的例子:sun.misc.Unsafe (是 Java 代码用来直接操作内存空间的类)。
实现方式,就是把初始化的工作,放到静态代码块中。
public final class StaticBlockSingleton {
private static final StaticBlockSingleton instance;
private static String str1;
private static String str2;
private StaticBlockSingleton() {
if (instance != null) {
throw new IllegalStateException();
}
}
static {
instance = new StaticBlockSingleton();
str1 = "Field1";
str2 = "Field2";
}
public static final StaticBlockSingleton getInstance() {
return instance;
}
}
- 反射,多线程,优势,劣势:与饿汉模式(Eager)相同