双重检测锁模式
作用:这个模式通过将同步内容(synchronized内的内容)提到if方法内部,通过双重检测的方式来保证第一次创建的准确性,但是对于后面的再次调用不再要求上锁。从而提高了执行的效率,因为不必每次都进行同步(只要同步第一次)。
但是由于双重锁和java的JVM机制的原因,并不是每次都能成功完成单例,故不常用。
静态内部类
作用:通过在类的内部加入一个静态的内部类的方法进行对类的单例化(在内部类中利用final和static来保证单例)。这种方法在使用的过程中,因为其类在加载时并不会立即加载静态内部类,所以它是一种懒加载(保证了计算机的资源利用)。又由于内部类在初始化的过程中是天然的线程安全,从而保证了单例的创立的冲突问题,所以它兼备了并发高效调用和延时加载的优势。
代码:
package _1.singleton;
/**
*
* @author 大帅比
* 静态内部类(懒加载)
* 1)外部类没有static属性,则不会像饿汉式那样立即加载对象。
* 2)只有真正调用getInstance()才会加载静态内部类。加载类时是线程安全的。instance是static final类型,保证了内存中只有这样
* 一个实例存在&#x