单例模式中的饿汉式

提前将对象准备好,加载到内存中

1.1 饿汉式介绍

是否Lazy初始化:否 (提前准备好对象)

是否多线程安全:是 (饿汉式只有一个实例,没有多线程)

描述:这种⽅式⽐较常⽤,但容易产⽣垃圾对象。 (可能创建出来的对象一直没有用)

优点:没有加锁,执⾏效率会提⾼。

缺点:类加载时就初始化,浪费内存。

它基于classloader机制避免了多线程的同步问题,不过instance在类装载时就实例化,虽然导致类装载的原因有很多种,在单例模式中⼤多数都是调⽤getInstance()⽅法, 但是也不能确定有其他的⽅式(或者其他的静态⽅法)导致类装载,这时候初始化instance显然没有达到lazy loading的效果。

1.2 饿汉式案例

1.创建⼀个Java项⽬。

2.创建⼀个HungrySingleton类。

package com.设计模式.饿汉式;
public class HungrySingleton {
    //设置为静态,实现全局访问              //提前将对象准备好,加载到内存中
    private static HungrySingleton instance = new HungrySingleton();
    //构造方法私有化目的是为了在其他类里不能创建该对象
    private HungrySingleton(){}
    //提供静态方法来访问类中的私有成员
    public static HungrySingleton getInstance(){
        return instance;
    }
    public void showMessage(){
        System.out.println("创建instence成功,showMessage执行了");
    }
}

3.从HungrySingleton类获取唯⼀的对象。

package com.设计模式.饿汉式;
public class Test_HungrySingleton {
    public static void main(String[] args) {
        HungrySingleton hungrySingleton = HungrySingleton.getInstance();
        hungrySingleton.showMessage();
    }
}

4.执⾏程序,输出结果。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值