1、饿汉式 特点:好处是没有线程安全的问题,坏处是浪费内存空间。 Java>> public class SingleInstance1 { private static SingleInstance1 instance; public SingleInstance1 getInstance(){ if (instance == null) { synchronized (SingleInstance1.class) { if (instance == null) { instance = new SingleInstance1(); } } } return instance; } } Kotlin>> object SingleTon { }
2、懒汉式
特点:好处是没有内存空间浪费的问题,但是控制不好实际不是单例。
Java>> public class SingleTon1 { private volatile static SingleTon1 instance; /** * 双重校验 * 提供一个静态方法让外部调用 * @return 类对象 */ public SingleTon1 getInstance(){ if (instance == null) { synchronized (SingleTon1.class) { if (instance == null) { instance = new SingleTon1(); } }