java实现单例 singleton

本文深入探讨Java中Singleton模式的实现方式,包括经典的静态内部类方法和优化措施,确保线程安全和避免双重检查锁定带来的性能损耗。

方法一:

public class Singleton {

        private final static Singleton INSTANCE = new Singleton(); 

    // Private constructor suppresses generation of a (public) default constructor

    privateSingleton() {} 

    publicstaticSingleton getInstance() {

      return INSTANCE;

    }

 }


使用static修饰getInstance,则不需要Singleton实例也能调用getInstance方法(在外面无法通过new获得Singleton实例,然后调用getInstance方法)


标准的Singleton模式并不使用直接静态变量实例化进行声明(它实例化构造器中的一个静态实例变量,而不查看它是否已经存在)

方法二:

public class ClassicSingleton {

    private static ClassicSingleton INSTANCE = null;

    privateClassicSingleton() {

       // Exists only to defeat instantiation.

    }

    publicstaticClassicSingleton getInstance() {  //若是多线程,此方法还可以加上修饰符synchronized,防止同事实例化了多个INSTANCE

       if(INSTANCE == null) {

          INSTANCE = new ClassicSingleton();

       }

       return INSTANCE;

    }

 }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值