java中饿汉与懒汉的故事(单例设计模式)

本文介绍了Java中的两种单例设计模式——饿汉式和懒汉式。饿汉式在类加载时即创建对象,保证线程安全但可能导致加载时间过长;懒汉式则在首次调用时才创建对象,延迟加载,但在多线程环境下可能不安全,但可通过优化实现线程安全。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

java中的单例设计模式

关于设计模式,这其实是单独存在的东西,它不属于java,但是在java中使用较多,所以今天我就给大家介绍下单例设计模式中的饿汉和懒汉这俩朴素的打工人。
首先我先说明下单例设计模式是啥(如果不想了解,可以直接划下去看饿汉和懒汉):类的单例设计模式就是采用一定的方法保证在整个软件系统中,对某个类只能存在一个对象实例。(不懂也没关系,会用就好)

一.饿汉式
饿汉式:可以理解为饿的不行了,就提前把吃饭工具准备好(new对象),再进行“吃”的操作。
用代码说话叭:

class Family{
    private int number;
    private String name;
    private Family(){
    }        //构造器私有化
    private static Family Instance=new Family();  
    //内部创建类的对象
    public static Family getInstance(){
        return Instance;
    }
    //提供公共的静态方法,且返回对象。
}
public class Test3 {
    public static void main(String[] args) {
        Family family1=Family.getInstance();
        Family family2=Family.getInstance();
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

二.懒汉式
懒汉式:可以理解这人特懒,他只是洗下碗但是不准备,啥时候吃饭啥时候弄吃饭工具(new对象)。
用代码说话叭:

class lazy {
    private lazy(){
    }
    private static lazy Instance = null;
    //声明当前对象没有初始化值
    public static lazy getInstance(){
        if (Instance==null){
            Instance=new lazy();
            //需要再造对象,不要就不new对象了
        }
        return Instance;
    }
}
public class Test32 {
    public static void main(String[] args) {
       lazy lazy1=lazy.getInstance();
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

三.饿汉和懒汉有啥不同
对于饿汉式:
优点:线程贼安全
缺点:对象加载时间过长
对于懒汉式:
优点:延迟对象的创建,更快
缺点:多线程安全贼低,但是可以通过优化使其可用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值