Java单例设计模式(懒汉式和饿汉式)

        java中的单例设计模式是一种常用的设计模式,它用于确保一个类中只有一个实例,并提供一个全局访问点来获取这个实例。单例模式有两个实现方法:懒汉式和饿汉式。

一、懒汉式

懒汉式单例设计模式是指在全局的单例实例在第一次被使用时构建。

        public class Single {

        // 目标:在一个类的外部有且只有一个该类对象
        // 私有构造函数,防止外部通过new创建实例 

        private Single(){}
        // 私有静态变量,暂不实例化,延迟加载

        private static Single single = new Single;
        // 提供一个公共的静态方法,返回唯一实例,需要时创建 

        public static Single getInstance(){

             if (single == null){

                 single = new Single();

              }

                 return single;

            }

        }

懒汉式是线程不安全的,如果多个线程同时访问getInstance(),可能会创建多个实例。可以通过添加synchronized关键字到getInstance()方法来解决,但这样会降低效率。

        public class Single {  
         // 私有构造函数,防止外部通过new创建实例  

        private Single(){} 

        // 私有静态变量,暂不实例化,延迟加载

        private static Single single = new Single;

        // 提供一个公共的静态方法,返回唯一实例,需要时创建 

        public static synchronized Single getInstance(){

             if (single == null){

                 single = new Single();

              }

                 return single;

            }


        }

二、饿汉式

饿汉式单例设计模式是指在类加载时就完成了初始化,所以类加载较慢,但获取对象的速度快。

public class Singlen {

        //饿汉式

        // 饿汉式单例实现  
        // 在类加载时就完成了Singlen实例的初始化,保证了单例的唯一性  
        // 同时,由于是在类加载时初始化,因此它也是线程安全的

        private static Singlen singlen = new Singlen();

        // 私有构造函数,防止外部通过new关键字直接创建Singlen类的实例  
        // 这是实现单例模式的关键步骤之一 

        private Singlen(){}

         // 提供一个公共的静态方法,用于获取Singlen类的唯一实例  
         // 由于实例在类加载时就已经创建,所以这个方法总是返回相同的实例

        public static Singlen getSinglen(){

                return singlen;

        }

}

饿汉式是线程安全的,因为实例在类加载时就已经创建,所以不存在多个线程同时访问getInstance()方法的问题。

懒汉式饿汉式
效率懒汉式每次都需要进行判断,而饿汉式不需要, 所以,相比而言懒汉式效率低,饿汉式效率高。
内存饿汉式在类加载的时候就会直接创建对象,所以 就会直接占用内存,而此时并不一定会使用该对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值