单例模式

单例模式

单例模式:用来保证一个对象只能被创建一次。

普通版

代码实现如下

public class Singleton{
    
    private static Singleton instance;
    private Singleton{
        
    }
    public static Singleton getInstance(){
        if(instance==null){
            instance = new Singleton();
        }
        return instance;
    }
}

同步锁单例

单例模式如果再多线程中使用,如果实例为空,可能存在两个线程同时调用 getInstance() 方法的情况。就会操作对象不唯一。没有达到单例的目的。如要解决这种情况,只需要在方法上 添加 syncchonized 关键字保证线程安全。


public class Singleton{
    
    private static Singleton instance;
    private Singleton{
        
    }
    public static syncchonized Singleton getInstance(){
        if(instance==null){
            instance = new Singleton();
        }
        return instance;
    }
    
    or
    
     public static  Singleton getInstance(){
     syncchonized(Singleton.class)
        if(instance==null){
            instance = new Singleton();
        }
        return instance;
    }
    
    
}

无锁的线程安全单例模式

通过在声明时直接实例化静态成员的方法来保证只有一个实例。这种方式避免了使用同步锁机制和判断实例是否被创建的额外检查。

 private static Singleton instance = new Singleton();
    private Singleton{
        
    }
    public static  Singleton getInstance(){

        return instance;
    }
}

你可能感兴趣的:(单例模式)