先上代码
public class TestSingleton {
// 私有构造方法
private TestSingleton() {
System.out.println("无参构造器执行");
// 初始化操作
}
// 静态内部类
private static class SingletonHolder {
private static final TestSingleton INSTANCE = new TestSingleton();
}
// 获取单例对象的方法
public static TestSingleton getInstance() {
return SingletonHolder.INSTANCE;
}
public static void main(String[] args) {
TestSingleton instance = getInstance();
TestSingleton instance1 = getInstance();
}
}
无参构造器只会运行一次
通过调用 getInstance() 方法,可以获取到单例对象的实例。由于静态内部类只会被加载一次,因此可以保证线程安全。同时,由于静态内部类的加载是在调用 getInstance() 方法时才会进行,所以实现了延迟加载的效果。