double check单例模式
时间: 2023-12-10 18:02:32 浏览: 121
双重检查锁定(Double-Check Locking)是一种使用同步块加锁的方法,用于在多线程环境下延迟初始化单例对象。其核心思想是:第一次检查单例实例是否存在,如果不存在才进入同步块进行处理,同时在同步块内部再次检查单例实例是否存在,如果不存在才真正地创建单例对象。这种方式既可以保证线程安全,又可以避免每次获取单例对象时都进行同步,从而提高了性能。
下面是一个使用双重检查锁定实现单例模式的Java代码示例:
```java
public class Singleton {
private static volatile Singleton instance;
private Singleton() {}
public static Singleton getInstance() {
if (instance == null) {
synchronized (Singleton.class) {
if (instance == null) {
instance = new Singleton();
}
}
}
return instance;
}
}
```
在上面的代码中,使用了volatile关键字来保证instance变量的可见性和有序性,从而避免了多线程环境下的问题。同时,在同步块内部进行了第二次检查,以确保只有一个线程创建了单例对象。
阅读全文