1.概述
在Java中,DCL(Double-Checked Locking)是一种常用的实现单例模式的技术之一。它通过使用双重检查来实现在多线程环境下懒加载的单例对象。在DCL中,需要使用volatile关键字来修饰单例对象,以确保其可见性和有序性。
需要将单例对象声明为volatile的主要原因是解决指令重排序(instruction reordering)可能引起的问题
。 在多线程环境中,由于指令重排序的优化,可能会导致某个线程在访问未完全初始化的单例对象时获取到一个不完整的实例。
本文出自 csdn 九师兄,防伪标志,本文由九师兄唯一发布。原地址:https://blog.youkuaiyun.com/qq_21383435
当我们使用instance = new DCLExample()来创建对象实例的时候