--主要:
饿汉式(线程安全,调用效率高,但是不能延时加载)
懒汉式(线程安全,调用效率低,但是可以延时加载)
--其他:
双重检测锁式(由于JVM底层内部模型原因,偶尔会出现问题,不建议使用)
静态内部类式(线程安全,调用效率高,可以延时加载)
枚举式(线程安全,调用效率高,不能延时加载,并且可以天然的防止反射和反序列化漏洞!)
-- 如何选用?
单例对象 占用 资源 少,不需要 延时加载: 枚举式 好于 饿汉式
单例对象 占用 资源 大, 需要 延时加载: 静态内部类式 好于 懒汉式