java 单例模式分为懒汉式和饿汉式


懒汉式:时间换空间  需要加锁保证线程安全

饿汉式:空间换时间  无需加锁线程安全


在《研磨设计模式》一书中介绍了一种叫做:Lazy initialization holder class 模式,这个模式综合使用了java的类级内部类和多线程缺省同步的知识,很巧妙的实现了延迟加载和线程安全。

public class Singleton
{
    private static class SingletonHolder
    {
        private static Singleton instance = new Singleton();
    }
             
    private Singleton()
    {
        // 构造函数私有化,保证不会被主动创建
    }
             
    public static Singleton getInstance()
    {
        return SingletonHolder.instance;
    }
}