单例模式

单件模式详解

这是必须会的,经常用在属性管理器,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. 单件类不能当成超类,因为构造器私有

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值