关于单例模式:多线程环境单例模式

多线程环境单例模式 : 双重检测+上锁

public class Singleton {

/**
 * 结构器私有化避免被公共创立
 */
private Singleton() {
    
}

//创立多线程锁
private static Object lock = new Object();

//单例本体
private static Singleton singleton = null;

//获取单例
public static Singleton getInstance() {
    
    //当多线程环境中单例本体为空
    if (singleton == null) {
        
        //上锁避免被其余线程争夺
        synchronized (lock) {
            
            //双重查看更加平安和合乎业务场景
            if (singleton == null) {
                
                //加锁和双重检测后初始化单例
                singleton = new Singleton();
            }
        }
    }
    
    //返回单例后果
    return singleton;
  }
}    

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理