参考博客:http://www.2cto.com/kf/201310/249105.html
1、懒汉模式:每一次调用都要对方法进行加锁,要维护锁会导致性能损耗,其实不需要每次进入方法都加锁,只需要第一次进入的时候防止多个线程产生多个单例即可。所以只需要在new Singleton处加锁即可,由此引出第二种模式,双重锁定模式。
/
2、双重锁定模式:第一次生成完实例以后就直接返回实例,不需要对方法进行加锁,解决了多余的同步问题。但是由于jvm的加载机制的无序,会导致出现失效的情况,所以使用第三种模式。
(3)静态内部类模式:由于静态内部类第一次被调用时才会加载,既可以保证线程安全,也延迟了单例的实例化。