题解 | #创建单例对象#

创建单例对象

http://www.nowcoder.com/practice/9b316cd2d6264776918bc4bc31f37aec

题意整理

  • 实例化一个Singleton类,保证每次调用实例化方法时,得到的是相同的实例。

方法一(懒汉式)

1.解题思路

  • 当对象为空时,才进行new操作,保证一个类只有一个实例。
  • 这种方法是单例模式的懒汉式实现。存在线程安全的问题,可以通过加锁保证线程安全,但是又会产生效率问题。比较理想的方案是双重校验,即DCL单例实现,或者使用静态内部类实现。

图解展示: alt

2.代码实现

public class Main {

    public static void main(String[] args) {
        Singleton s1 = Singleton.getInstance();
        Singleton s2 = Singleton.getInstance();
        System.out.println(s1 == s2);
    }

}

class Singleton {

    private static Singleton instance;

    private Singleton() {
        
    }

    public static Singleton getInstance(){
        //如果为空,才进行实例化,保证一个类只有一个实例,存在线程安全的问题
        if(instance==null){
            instance=new Singleton();
        }
        return instance;
    } 

}

3.复杂度分析

  • 时间复杂度:只需进行一次new操作,所以时间复杂度为O(1)O(1)
  • 空间复杂度:不需要额外的空间,所以空间复杂度为O(1)O(1)
xqxls的题解 文章被收录于专栏

牛客题解

全部评论

相关推荐

测试糕手手:社会第一课,随便吹牛逼,直接说四个月,别老实。老实人只会被欺负
点赞 评论 收藏
分享
风中翠竹:真的真的真的没有kpi。。。面试官是没有任何kpi的,捞是真的想试试看这个行不行,碰碰运气,或者是面试官比较闲现在,没事捞个人看看。kpi算HR那边,但是只有你入职了,kpi才作数,面试是没有的。
双非有机会进大厂吗
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务