JAVA三种实现单例模式方法(二):使用静态内部类实现单例设计模式

本文探讨了使用静态内部类实现Java单例模式的原理,这种实现方式结合了延迟加载和线程安全。当内部类的静态域被引用时,内部类及其单例对象才被加载,确保了线程安全且避免了不必要的资源消耗。
摘要由CSDN通过智能技术生成

静态代码块和静态内部类的加载顺序:当调用外部类的构造函数是,外部类的静态代码块同时被加载,但是其内部类不会同时被加载;当且仅当内部类的静态域或其构造方法或其静态方法被调用时,内部内才被加载

因此,通过内部内实现单例,就能实现延迟加载。

这个解决方案被称为Lazy initialization  holder class 模式,这个模式综合使用了java的类级内部类和多线程缺省同步锁的知识, ,很巧妙的同时实现了延迟加载和线程安全。

1 相应的基础知识 
(1)什么是类级内部类? 
简单点说,类级内部类指的是,有static修饰的成员内部类。如果没有static修饰的成员式内部类被称为对象级内部类。 
(2)类级内部类相当于其外部类的static成分,它的对象与外部类对象间不存在依赖关系,因此 可以直接创建。而对象级内部类的实例,是绑定在外部对象实例中的。 
(3)类级内部类中,可以定义静态的方法。在静态方法中只能引用外部类中的静态成员方法或变量。 
(4)类级内部类相当于其外部类的成员,只有在第一次被使用的时候才会被装载。

多线程缺省同步锁的知识: 
大家都知道,在多线程开发中,为了解决并发问题,主要是通过使用synchronized来加互斥锁进行同步控制, 但是在某些情况下,JVM已经隐含的为您执行了同步,这些情况下就不用自己再来进行同步控制了。 这些情况包括: 
(1)由静态初始化器(在静态字段上或s

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值