单例模式

2018-05-09  本文已影响0人  jjjjxd

    写法:懒汉式(略)、饿汉式(略)、静态内部类、双重检查锁、枚举

静态内部类:

静态内部类

 当getInstance方法第一次被调用的时候,它第一次读取SingletonHolder.instance,导致SingletonHolder类得到初始化;而这个类在装载并被初始化的时候,会初始化它的静态域,从而创建Singleton的实例,由于是静态的域,因此只会在虚拟机装载类的时候初始化一次,并由虚拟机来保证它的线程安全性。

双重检查锁

双重检查锁

如果不加volatile,因为singleton =new Singleton()不是原子操作【详见JAVA虚拟机学习对象创建过程】,导致因指令重排序使instance指向一片还未创建singleton的内存空间,使得其他线程执行null==singleon为true获得未完全初始化的对象。

枚举

 枚举

在枚举类中还可以有自己的方法

上一篇 下一篇

猜你喜欢

热点阅读