java单例的写法以及为什么使用单例

本文探讨了为什么要使用单例模式,包括性能优化和资源节省。对比了单例、静态类和服务注解的区别,并详细介绍了单例的四种实现方式:饿汉法、懒汉法、简单线程安全懒汉模式以及静态内部类法,分析了各自的优缺点和线程安全问题。静态内部类法因其延迟加载和线程安全特性被视为一种优雅的实现方式。
摘要由CSDN通过智能技术生成

1 为什么要用单例模式

单例模式是一种对象创建模式,用于生产一个对象的实例,它可以确保系统中一个类只产生一个实例,这样做有两个好处:

  1. 对于频繁使用的对象,可以省略创建对象所花费的时间,这对于那些重量级对象而言,是非常可观的一笔系统开销。
  2. 由于new操作的次数减少,所以系统内存的使用评率也会降低,这将减少GC压力,缩短GC停顿时间。
    由于以上两点可知单例模式的使用对于系统的关键组件和频繁使用的对象来说是可以有效的改善系统的性能的。
    单例的核心是通过一个方法返回唯一的一个对象实例,首先单例类必须有一个private访问级别的构造函数,因为,只有这样,才能保证单例不会在系统中的其他代码内被实例化,其次,instance成员变量和getInstance方法必须是static的。

1.1 单例vs静态类vs@service

参考https://blog.csdn.net/jeason_chan_zju/article/details/99119309

2 单例的几种写法

2.1 饿汉法

public class Hungry_man_pattern {
   
    private Hungry_man_pattern(){
   
        System.out.println("调用"+this.getClass()+"饿汉模式构造函数!");
    }

    private static Hungry_man_pattern singleton=new Hungry_man_pattern();

    public static Hungry_man_pattern getSingleton()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值