单例模式

1、分类
类型 实例生成大致步骤 优点 缺点
饿汉式 在类加载时初始化实例,getInstance()方法不用同步 线程安全、调用效率高 但不能延时加载(可能造成资源浪费)
懒汉式 在调用时初始化实例,getInstance()需同步且得判断实例是否为空 线程安全、延时加载 调用效率不高,并发效率低
双重锁校验 初始化实例时同步更细粒度化 由于JVM内存模型原因导致可能出现某些问题
静态内部类式(懒汉式) 定义单例类A、静态内部类B、内部类B的final变量instance并调用A类构造函数初始化。getInstance()方法返回instance变量。 线程安全、调用效率高、延时加载
枚举单例 线程安全、调用效率高、可防止反射和反序列化 不能延时加载
2、如何选用

多线程环境下:懒汉式单例模式生成实例的时间 远大于 其他四种

不需要延时加载:枚举>饿汉式

需要延时加载:静态内部类>懒汉式

results matching ""

    No results matching ""