懒汉和饿汉单例的区别

    技术2022-05-19  21

    首先来看饿汉单例模式:

    public class EagerSingleton {    private EagerSingleton(){            }        private static EagerSingleton instance = new EagerSingleton();  //饿汉式在类被创建的时候就创建实例        public static EagerSingleton getInstance(){        return instance;    }}

     

    下面来看下懒汉单例模式:

     

    public class LazeSingleton {    private LazeSingleton(){            }        private static LazeSingleton instance = null; //懒汉式单例是延时加载,什么时候用什么时候创建实例        public static LazeSingleton getInstance(){        if(instance == null){            instance = new LazeSingleton();   //创建实例        }        return instance;    }}

     

    饿汉式是线程安全的,在类被创建的时候就被创建了一个静态的对象供系统使用,以后不再改变

    懒汉式如果在创建时不被加上synchronized则会导致对象的访问不是线程安全的

    推荐使用第一种


    最新回复(0)