单例模式:单例模式是确保一个类在任何状况下都相对只有一个实例,并提供一个全局拜访点。单例模式能够保障内存中只有一个单例,缩小了内存的开销,还能够防止对资源的多重利用。
饿汉式与懒汉式:
饿汉式是类一加载进去进内存就创立好了对象。
懒汉式则是类才加载进内存的时候,对象还没有存在,只有调用了 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