设计模式之单例模式

五迷三道 提交于 2020-02-29 02:49:41

单例模式是各场景下常用的一种模式。

安全的double check的实现

注意点

  1. 构造函数为private修饰,不让外部直接调用创建类
  2. 两次if判断instance是否为空。第一层是为了判断如果instance存在直接返回,第二层在synchronized内判断是为了解决当一个线程进入,另外排队等待锁的线程在第一个线程释放锁之后重复创建instance对象。
  3. volatile为了解决禁止指令重排序。instance = new instance 在jvm实际上分为三步,1分配空间,2初始化对象,3分配引用。 在jvm实际执行会存在优化的情况,执行顺序可能有123,132。volatile可以禁止指令重排序。

最后volatile的作用,

  1. 禁止指令重排序
  2. 内存可见性
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!