乐趣区

关于java:单例模式

单例模式 :单例模式是确保一个类在任何状况下都相对只有一个实例, 并提供一个全局拜访点。单例模式能够保障内存中只有一个单例, 缩小了内存的开销, 还能够防止对资源的多重利用。
饿汉式与懒汉式 :
饿汉式 是类一加载进去进内存就创立好了对象。
懒汉式 则是类才加载进内存的时候,对象还没有存在,只有调用了 getInstance() 办法时,对象才开始创立。懒汉式是提早加载,如果多个线程同时操作懒汉式时就有可能呈现线程平安问题,解决线程平安问题,能够加同步来解决。然而加了同步之后,每一次都要比拟锁,效率就变慢了,所以能够加双重判断来进步程序效率。
:开发罕用饿汉式,因为饿汉式简略平安。懒汉式多线程的时候容易产生问题
饿汉式单例:
① 长处:没有任何锁,执行效率比拟高,用户体验比懒汉式单例更好。
② 毛病:类加载的时候就初始化,不论用与不必都占用内存空间,节约了内存。

饿汉式
public class Singleton{private Singleton(){}
     private static Singleton singleton = new Singleton();
     public static Singleton getInstance(){return singleton;}
}
懒汉式
public class Singleton{private Singleton(){}
     private static Singleton singleton;
     public static synchronized Singleton getInstance(){if(singleton==null){synchronized(Singleton.class)
             if(singleton==null){singleton = new Singleton();
             }
         }
         return singleton;
     } 
}

Singleton.getInstance();
存在线程平安问题:为了保障懒汉式单例的线程平安问题,要在办法前加 synchronized

退出移动版