Java使用静态内部类创建单例

代码示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class Singleton {
// 私有构造函数,防止外部实例化
private Singleton() {}

// 静态内部类,只有在调用getInstance()时才会加载
private static class SingletonHolder {
private static final Singleton INSTANCE = new Singleton();
}

// 提供全局访问点
public static Singleton getInstance() {
return SingletonHolder.INSTANCE;
}
}

静态内部类SingletonHolder在Singleton类加载时并不会立即实例化,而是在调用getInstance()方法时才创建,所以是线程安全的。