java懒加载的原理及实现
时间: 2024-05-02 10:03:52 浏览: 22
懒加载也叫延迟加载,是一种常用的性能优化方式。它的基本思想是,将对象的创建过程推迟到真正需要使用该对象时再进行,从而避免了不必要的资源浪费和时间消耗。Java中实现懒加载的方式有多种,下面介绍几种常见的方式。
1. 双重检查锁定
双重检查锁定是一种常见的线程安全的懒加载实现方式。其基本思路是,在对象创建的时候进行一次非线程安全的检查,如果对象已经被创建,则直接返回该对象;如果对象还未被创建,则加锁创建对象并返回。这种方式可以避免在多线程环境下重复创建对象,从而提高性能。
```
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;
}
}
```
2. 静态内部类
静态内部类是另一种常见的懒加载实现方式。其基本思路是,在外部类中创建一个静态内部类,在静态内部类中创建需要懒加载的对象。由于静态内部类只有在被调用时才会被加载,因此可以实现懒加载的效果。
```
public class Singleton {
private Singleton() {}
private static class SingletonHolder {
private static final Singleton INSTANCE = new Singleton();
}
public static Singleton getInstance() {
return SingletonHolder.INSTANCE;
}
}
```
3. 枚举类型
枚举类型是一种常见的懒加载实现方式。枚举类型中的每个枚举常量都是在第一次访问时被创建的,因此可以实现懒加载的效果。同时,由于枚举类型是线程安全的,并且可以保证单例模式的正确性,因此也是一种较为优秀的实现方式。
```
public enum Singleton {
INSTANCE;
public void doSomething() {
// ...
}
}
```
以上是几种常见的Java懒加载实现方式,可以根据具体情况选择适合自己的方式进行实现。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)