单例模式总结
Posted ShinningWu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单例模式总结相关的知识,希望对你有一定的参考价值。
(1)双重校验锁
public class Singleton { private volatile static Singleton singleton; private Singleton (){} public static Singleton getSingleton() { if (singleton == null) { synchronized (Singleton.class) { if (singleton == null) { singleton = new Singleton(); } } } return singleton; } }
1)构造函数和对象私有化
2)对象用violate和static关键字修饰
3)公有的静态获取对象方法
4)双重校验锁
violate关键字作用:防止指令重排序
创建对象可以分解为如下的3行伪代码
memory=allocate(); //1:分配对象的内存空间
ctorInstance(memory); //2:初始化对象
instance=memory; //3:设置instance指向刚分配的内存地址
上面3行代码中的2和3之间,可能会被重排序导致先3后2
(2)静态内部类
public class Singleton { private static class SingletonHolder { private static final Singleton INSTANCE = new Singleton(); } private Singleton (){} public static final Singleton getInstance() { return SingletonHolder.INSTANCE; } }
1)对象用static和final修饰
2)对象由静态类包裹
以上是关于单例模式总结的主要内容,如果未能解决你的问题,请参考以下文章