单例的几种写法

    xiaoxiao2021-12-14  43

    单例模式的运用十分广泛,下面给出单例模式的几种写法

    1.懒汉

    懒汉就意味着只在需要的时候才进行初始化,但是线程不安全

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

    2.线程安全的懒汉

    线程安全,但是效率低,毕竟进行一次初始化以后的同步锁定毫无意义。

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

    3.饿汉

    饿汉在类加载的时候就会对static的instance完成初始化

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

    4.双重检验锁

    两次校验,第二次加锁,可以避免初始化后同步效率低的问题。

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

    单例模式的七种写法:http://cantellow.iteye.com/blog/838473

    转载请注明原文地址: https://ju.6miu.com/read-964730.html

    最新回复(0)