单例模式的双重if判断与线程安全

单例模式确保一个类只有一个实例,并提供全局访问点。代码中的双重if判断和volatile关键字用于线程安全地初始化单例,防止多线程环境下多个实例的产生。外层if检查避免不必要的同步,内层if保证了实例在多线程环境下的正确初始化。

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

单例模式

单例模式是指设计一个只能构造一个对象的类。简单来说就是在一个进程运行过程中只可以存在一个该类的对象。

单例模式的对象获得设计方式

public class Singleton{
    private volatile static Singleton singleton;
    private Singleton(){}
    public static Singleton getSingleton(){
        if(singleton == null){
            synchronized(Singleton.class){
            if(singleton == null){
            	singleton = new Singleton();
        		}
        	}
        }
        return singleton;
    }
}

对于以上代码,有人可能会有以下疑问:

  1. 为什么要加锁
  2. 为什么要两层if判断

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值