java中两种单例模式

//懒汉式(线程不安全)
class LazySingleton{
    private static LazySingleton singleton;
    
    private LazySingleton(){}
    
    public static LazySingleton getInstance(){
        if(singleton==null){
            singleton = new LazySingleton();
        }
        return singleton;
    }
}

//饿汉式(推荐使用)
class eSingleTon{
    private static eSingleTon singleton = new eSingleTon();
    
    private eSingleTon(){}
    
    public static eSingleTon getInstance(){
        return singleton;
    }
}

上面两个是单例模式,想必都不陌生。

对于懒汉式有个缺点,就是在多线程的情况会有一定的问题存在。假如线程A和线程B同时实例这个单例。进入if的判空就会分别实例出一个singleton.这就违背了单例模式的初衷。

这里推荐使用饿汉式,每次都会实例化,避免了多线程的问题

原文地址:https://www.cnblogs.com/wangxiangstudy/p/5190805.html