单例模式的饿汉模式和懒汉模式

单例模式是最简单的设计模式之一,shu'yu创建型模式,提供了一种创建对象的最佳方式

单例模式:

1、单例模式只能由一个实例

2、单例模式必须自己创建自己的唯一实例

3、单例模式必须给其他所有对象提供这一实例

饿汉式:

类一旦加载就把单例初始化完成,保证getInstance的时候,单例是已经存在的了。

不是lazy初始化,是多线程安全的,比较常用,但是容易产生垃圾对象,优点是没有加锁,执行效率会提高。缺点是类加载时就初始化,浪费内存。

public class SingletonEH {
 
    private static SingletonEH instance = new SingletonEH();
    private SingletonEH (){}
    public static SingletonEH getInstance() {
        System.out.println("instance:"+instance);
        System.out.println("加载饿汉式....");
        return instance;
    }
}
 

懒汉式:

比较懒,只有当调用getInstance的时候,才初始化这个单例。

是Lazy初始化,非多线程安全,是最基本的实现方式,但是问题是不支持多线程,因为没有加锁,所以一般另外加锁,执行效率低。

public class SingletonLH {
    
    private static SingletonLH instance;
    private SingletonLH (){}
 
    public static SingletonLH getInstance() {
        if (instance == null) {
            instance = new SingletonLH();
        }
        return instance;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值