是否 Lazy 初始化:
    是否多线程安全:
    实现难度:
    描述:这种方式具备很好的 lazy loading,能够在多线程中很好的工作,但是,效率很低,99% 情况下不需要同步。
    优点:第一次调用才初始化,避免内存浪费。
    缺点:必须加锁 synchronized 才能保证单例,但加锁会影响效率。
    getInstance() 的性能对应用程序不是很关键(该方法使用不太频繁)。
    代码实例:

    1. /**
    2. * 懒汉式 线程安全
    3. */
    4. public class Singleton {
    5. // 私有构造方法
    6. private Singleton() {
    7. }
    8. // 在成员位置创建该类的对象
    9. private static Singleton instance;
    10. // 对外提供静态方法获取该对象
    11. public static synchronized Singleton getInstance() {
    12. if (instance == null) {
    13. instance = new Singleton();
    14. }
    15. return instance;
    16. }
    17. }