public class Singleton { private volatile static Singleton instance; private Singleton() {} public static Singleton getInstance() { if (instance == null) { synchronized (Singleton.class) { if (instance == null) { instance = new Singleton(); } } } return instance; } } 这是什么语言的代码,有什么作用,是否存在风险,请详细回答
时间: 2023-06-04 21:08:36 浏览: 85
Singleton两种代码实现
这是 Java 语言的代码,作用是实现单例模式,即确保一个类只有一个实例,并且提供一个全局访问点。在 getInstance 方法中,当 instance 为空时,采用双重检查锁定机制(Double Checked Locking)创建实例,确保线程安全。风险方面,存在指令重排序可能导致未经初始化的实例被返回的情况,但是在 Java 5 及以上版本通过使用 volatile 关键字可避免此问题。
阅读全文