单例模式

这是必须会的,经常用在属性管理器,Runtime对象。


延迟实例化(懒汉)  <--- 双重检查加锁

急切实例化(饿汉)


有状态和无状态 (分散式系统中)


public class Singleton{
 
  private Singleton(){}
    private static SingletonuniqueInstance = new Singleton();
    public static SingletongetInstance(){
              return uniqueInstance;
    }
}
单件模式——确保一个类只有一个实例,并提供一个全局访问点
1. 同步一个方法可能造成程序执行效率下降100倍,所以不考虑synchronized getInstance
2. 急切创建单件,使创建和运行时方面的负担不太繁重

“双重检查加锁”
public class Singleton{
    private Singleton(){}
    private volatile staticSingleton uniqueInstance;
    public static SingletongetInstance(){
              if(uniqueInstance == null){
                        synchronized(Singleton.class){
                                if(uniqueInstance == null){
                                      uniqueInstance  = new Singleton();
                                }
                        }
              }
              return uniqueInstance;
    }
}

注意:
1. 全局变量比单件模式差:全局变量不能确保只有一个实例
2. 单件类不能当成超类,因为构造器私有

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值