单例模式

    技术2025-09-04  16

    饿汉方式:因为加载类的时候就创建实例,所以线程安全(多个ClassLoader存在时例外)。缺点是不能延时加载。 懒汉方式:需要加锁才能实现多线程同步,但是效率会降低。优点是延时加载。 静态内部类:延迟加载,减少内存开销。因为用到的时候才加载,避免了静态field在单例类加载时即进入到堆内存的permanent代而永远得不到回收的缺点。

    一、饿汉式单例

     

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

     

    二、懒汉式单例

     

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

     

     三、单例模式嵌套类实现

     

    public class InnerClassSingleton { 4. 5.   private InnerClassSingleton(){}; 6. 7.   static class staticInnerSingle{ 8.    private static InnerClassSingleton instance = new InnerClassSingleton(); 9.     } 10. 11.   public static InnerClassSingleton getInstance(){ 12.    return staticInnerSingle.instance; 13.    } 14.}

    最新回复(0)