最佳懒汉式单例模式

单例模式。
单例模式有两种,饿汉式和懒汉式。前者不会出现同步问题,后者不仅有同步问题,而且即使使用同步函数,也会带来效率的问题。所以需要优化。
下面是代码详解:
【据说面试常考懒汉式,而实际应用中都是饿汉式】

//【饿汉式单例模式】:
//线程安全,对于贡献数据的操作带码不会产生不同步问题(只有一行);
class Single{
    private static Single s = new Single();
    private Single(){
    }
    //通过此方法获取对象,有点就是可控!。你可以根据条件是否返回该实例
    public static Single getInstance(){ 
        return s;
    }
}
//【懒汉式】
//线程不安全的,因为操作贡献数据的代码存在多行,会产生不同步!
//为了解决单例模式的线程不安全问题,因此需要同步代码【当然你可以直接用安全的恶汉式】
//以下就是,既安全又不会因为cpu的调度导致效率低下的懒汉式单例模式
class Single {
    private static Single s = null;
    private  Single(){}
    //  Thread2
    private static Single getInstanceSingle(){
        if(s==null){
            synchronized(Single.class) {
                //Thread1 
                if(s == null) {
                    return s  = new Single();
                }
            }
            //Thread0
        }
        return s;
    }
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值