java 单例 内部类方式
时间: 2023-10-14 16:21:40 浏览: 86
Java 单例模式的内部类方式可以保证线程安全性,同时也避免了直接在类加载时就创建单例实例的问题。以下是一个使用内部类方式实现的 Java 单例模式示例:
```java
public class Singleton {
private Singleton() {}
private static class SingletonHolder {
private static final Singleton INSTANCE = new Singleton();
}
public static Singleton getInstance() {
return SingletonHolder.INSTANCE;
}
}
```
在这个示例中,`Singleton` 的构造函数是私有的,这样外部就无法直接创建 `Singleton` 的实例。`SingletonHolder` 是一个私有静态内部类,它包含一个私有静态变量 `INSTANCE`,用于保存 `Singleton` 的单例实例。由于 `SingletonHolder` 是一个内部类,所以它只有在第一次使用时才会被加载,这也就保证了单例实例的延迟加载。在 `getInstance()` 方法中,我们直接返回 `SingletonHolder.INSTANCE`,这样就可以获取到 `Singleton` 的单例实例。
需要注意的是,这种方式只适用于单线程和多线程环境下都能保证线程安全。如果要在使用单例时需要进行多线程操作,还需要在方法里加上 `synchronized` 关键字,或者使用双重检查锁定等方式来保证线程安全。
阅读全文