java holder 单例
时间: 2024-04-23 16:27:37 浏览: 16
Java 中的 Holder 单例是一种线程安全的懒加载单例模式,它利用了类加载的特性来实现延迟加载和线程安全。
Holder 单例模式的实现核心是使用一个静态内部类来持有单例对象,通过在静态内部类中初始化单例对象来实现延迟加载。这样可以保证在第一次使用单例对象时才会触发其初始化。
下面是一个使用 Holder 单例模式的示例代码:
```java
public class Singleton {
private Singleton() {
// 私有化构造方法,防止外部实例化
}
private static class Holder {
private static final Singleton INSTANCE = new Singleton();
}
public static Singleton getInstance() {
return Holder.INSTANCE;
}
}
```
在上述代码中,私有化构造方法使得外部无法直接实例化 Singleton 类。Holder 类是一个静态内部类,并在其中声明了一个静态的 final 单例对象 INSTANCE。由于静态内部类只有在被使用时才会被加载,Holder 内部的 INSTANCE 对象也会在需要时才被初始化。
通过调用 `Singleton.getInstance()` 方法获取 Singleton 实例时,Holder 的 INSTANCE 对象将被初始化并返回,保证了单例对象的唯一性和线程安全性。
这种方式不需要使用显式的锁或同步关键字来保证线程安全,同时又能实现延迟加载,因此被广泛应用于单例模式的实现中。
希望对你有所帮助!如果还有其他问题,请继续提问。