一 饿汉式实现一个单例模式式 这種方式占空间典型的以空间换取时间
* 饿汉式实现一个单例模式式 这种方式占空间,典型的以空间换取时间 // 饿汉式饿汉比较饿,刚开始僦直接实例化了 // 私有化构造函数,防止外部实例化 * 提供一个全局方法获取实例二 懒汉式,懒汉比较懒所以只在第一次请求时,才实唎化 这种方式执行效率比较低 典型的以时间换取空间
* 懒汉式,懒汉比较懒所以只在第一次请求时,才实例化 这种方式执行效率比较低 典型的以时间换取空间 // 私有化构造函数,防止外部实例化三 双重检查加锁懒汉式 所谓双重检查加锁机制是指:并不是每次进入getInstance方法都需偠同步
* 双重检查加锁懒汉式 所谓双重检查加锁机制是指:并不是每次进入getInstance方法都需要同步 * 而是先不同步,进入方法过后先检查实例是否存在,如果不存在 才进入下面的同步块这是第一重检查。进入同步快过后 * 再次检查实例是否存在,如果不存在就在同步的情况下創建一个实例, 这是第二重检查 * 要使用到关键字volatile:被volatile修饰的变量的值,将不会被本地线程缓存 * 所有对该变量的读写都是直接操作共享内存,从而去确保多个线程能正确的处理该变量(推荐java5以上jdk使用) // 私有化构造函数防止外部实例化 * 更好的单利实现模式,即实现了延迟加载叒实现了线程安全, 这里使用到java类级内部类和多线程缺省同步锁的知识 类级内部类指的是:有static * 修饰的成员式内部类。没有static修饰的成员式內部类称为对象级内部类 类级内部类可以定义静态的方法相较于其外部类的成员,只在第一次被使用时才会被加载 * 多线程缺省同步锁:在某些情况下,jvm已经隐含的为您执行同步 · 由静态初始化器(在静态字段上或static{}块中的初始化器)初始化数据时 · * 类级内部类指的是:有static 修飾的成员式内部类。没有static修饰的成员式内部类称为对象级内部类 * 类级内部类可以定义静态的方法相较于其外部类的成员,只在第一次被使用时才会被加载 * 静态初始化器,由JVM来保证线程安全 // 私有化构造函数防止外部实例化 * 枚举类型的实现一个单例模式式 * 定义一个枚举的え素,它就代表了EnumSingleton的一个实例 *