简书 许乐
转载请注明原创出处,谢谢!
在整个系统中,单例类只有一个实例对象,需要自行完成实例化,并且始终对外提供同一实例对象。单例模式只允许创建一个对象,从而避免了频繁的创建对象,比较节省内存资源,减少了GC次数,加快对象访问速度。如数据库连接池、应用配置等一般都是单例。
静态内部类
的写法
public class SingleTon{
private SingleTon(){} //构造器私有化
//私有的静态内部类,该静态内部类只会在newInstance()方法中被使用
private static class SingleTonHoler{
//静态字段
static SingleTon INSTANCE = new SingleTon();
}
public static SingleTon getInstance(){
return SingleTonHoler.INSTANCE; // 访问静态内部类的静态字段
}
}
Java 类加载机制:当第一次访问类中的静态字段时(即调用getstatic或setstatic字节码指令时)会触发类加载操作,并且同一个类只被加载一次,类加载过程中,由类加载器负责加锁,从而保证线程安全。相比于双重检查锁的写法,更加简洁明了,也更加不容易出错。
问题:为什么使用单例模式而不用静态方法?
静态内部类的单例模式是基于静态方法(类)来实现的。
网友评论