Hutool Hutool
(opens new window)
🏡首页
📖指南
🎢最佳实践
💖支持
💡javaDoc (opens new window)
⏳更新记录 (opens new window)
  • 🍎gitee (opens new window)
  • 🍏github (opens new window)
(opens new window)
🏡首页
📖指南
🎢最佳实践
💖支持
💡javaDoc (opens new window)
⏳更新记录 (opens new window)
  • 🍎gitee (opens new window)
  • 🍏github (opens new window)
  • 快速入门

  • 核心(hutool-core)

    • AI(Hutool-ai)

    • 注解(annotation)

    • 数组(array)

    • JavaBean(bean)

    • 缓存(cache)

    • 类加载器(classloader)

    • 编码解码(codec)

    • 集合(collection)

    • 比较器(comparator)

    • 压缩(compress)

    • 类型转换(convert)

    • 数据(data)

    • 日期时间(date)

    • 异常(exception)

    • 函数(func)

    • IO流(io)

    • 语言特性(lang)

    • Map(map)

    • 数字数学(math)

    • 网络(net)

    • 对象池(pool)

      • 对象池
        • 模块概述
        • JDK对象池对比
          • JDK对象池的不足
          • Hutool对象池模块的优势
        • 核心类结构
        • 模块使用场景
        • 快速开始
          • 创建对象工厂
          • 创建对象池
          • 使用对象池
        • 分区对象池
        • 总结
      • 对象池架构设计
      • 对象池使用
    • 反射(reflect)

    • 正则(regex)

    • 服务提供(spi)

    • 聚合操作(stream)

    • 字符串文本(text)

    • 并发和线程(thread)

    • 树结构(tree)

    • 工具集合(util)

    • XML操作(xml)

  • 定时任务(hutool-cron)

  • 加密(hutool-crypto)

  • 数据库(hutool-db)

  • 扩展(hutool-extra)

  • HTTP(hutool-http)

  • 日志(hutool-log)

  • 配置文件(hutool-setting)

  • JSON(hutool-json)

  • Office办公(hutool-poi)

  • 套接字(hutool-socket)

  • GUI(hutool-swing)

  • 指南
  • 核心(hutool-core)
  • 对象池(pool)
Hutool
2026-01-03
目录

对象池

对象池模块是Hutool中用于管理对象创建、复用和销毁的核心模块,提供了对象池的基本实现和相关接口。

# 模块概述

对象池是一种设计模式,用于管理对象的创建、复用和销毁,以提高性能和资源利用率。通过对象池,可以避免频繁创建和销毁对象带来的性能开销,特别适合创建成本较高的对象。

对象池模块主要包括以下功能:

  • 对象池基本操作:对象的获取、归还、清除等
  • 对象工厂:用于创建和管理对象
  • 可池化对象:支持对象重置和验证
  • 对象池配置:支持配置对象池的大小、最大空闲时间等
  • 异常处理:提供了专门的对象池异常类

# JDK对象池对比

# JDK对象池的不足

  1. 功能简单:JDK自带的对象池功能较为简单,缺乏灵活的配置和管理
  2. 实现复杂:需要自己实现对象的创建、复用和销毁逻辑
  3. 缺少监控:没有提供对象池的监控和统计功能
  4. 线程安全:需要自己处理线程安全问题
  5. 缺少可扩展:不容易扩展和定制

# Hutool对象池模块的优势

  1. 功能丰富:提供了完整的对象池实现,包括对象的创建、复用、销毁等
  2. API简洁:提供了简洁易用的API,减少开发工作量
  3. 配置灵活:支持配置对象池的大小、最大空闲时间等
  4. 线程安全:内置线程安全机制,无需额外处理
  5. 易于扩展:提供了接口和抽象类,方便扩展和定制
  6. 监控支持:支持对象池的监控和统计

# 核心类结构

类名 主要功能
ObjectPool 对象池接口,定义了对象池的基本操作
ObjectFactory 对象工厂接口,用于创建和管理对象
Poolable 可池化对象接口,定义了对象的重置和验证方法
PoolConfig 对象池配置类,用于配置对象池的参数
PoolException 对象池异常类,用于处理对象池相关的异常
SimplePoolable 简单的可池化对象实现
partition 分区对象池包,提供了分区对象池的实现

# 模块使用场景

对象池适用于以下场景:

  1. 创建成本较高的对象:如数据库连接、网络连接、线程等
  2. 频繁创建和销毁的对象:如HTTP请求、文件流等
  3. 资源受限的环境:如移动设备、嵌入式系统等
  4. 高并发场景:如Web服务器、游戏服务器等

# 快速开始

# 创建对象工厂

首先,我们需要创建一个对象工厂,用于创建和管理对象:

// 创建对象工厂
ObjectFactory<StringBuilder> factory = new ObjectFactory<StringBuilder>() {
    @Override
    public StringBuilder create() {
        // 创建新对象
        return new StringBuilder();
    }

    @Override
    public void destroy(StringBuilder obj) {
        // 销毁对象(可选)
        obj.setLength(0);
    }

    @Override
    public boolean validate(StringBuilder obj) {
        // 验证对象是否可用(可选)
        return obj != null;
    }

    @Override
    public void reset(StringBuilder obj) {
        // 重置对象状态(可选)
        obj.setLength(0);
    }
};

# 创建对象池

然后,我们可以使用对象工厂创建对象池:

// 创建对象池配置
PoolConfig config = new PoolConfig();
config.setMaxTotal(10); // 最大对象数
config.setMaxIdle(5);   // 最大空闲对象数
config.setMinIdle(2);   // 最小空闲对象数

// 创建对象池
ObjectPool<StringBuilder> pool = new SimpleObjectPool<>(factory, config);

# 使用对象池

最后,我们可以使用对象池获取和归还对象:

// 从对象池获取对象
StringBuilder sb = pool.borrowObject();
try {
    // 使用对象
    sb.append("Hello, ");
    sb.append("Hutool!");
    Console.log(sb.toString());
} finally {
    // 归还对象到对象池
    pool.returnObject(sb);
}

# 分区对象池

除了基本的对象池实现,Hutool还提供了分区对象池,用于管理不同类型的对象:

// 创建分区对象池
PartitionObjectPool<String, StringBuilder> partitionPool = new PartitionObjectPool<>();

// 获取或创建特定分区的对象池
ObjectPool<StringBuilder> stringBuilderPool = partitionPool.getPool("stringBuilder", () -> {
    return new SimpleObjectPool<>(factory, config);
});

// 使用分区对象池
StringBuilder sb = stringBuilderPool.borrowObject();
try {
    // 使用对象
    sb.append("Hello, ");
    sb.append("Partition!");
    Console.log(sb.toString());
} finally {
    // 归还对象到分区对象池
    stringBuilderPool.returnObject(sb);
}

# 总结

对象池模块是Hutool中用于管理对象创建、复用和销毁的核心模块,提供了对象池的基本实现和相关接口。通过使用对象池,可以提高性能和资源利用率,特别适合创建成本较高或频繁创建和销毁的对象。

无论是基本的对象池还是分区对象池,Hutool都提供了简洁易用的API,方便开发者使用和扩展。

接下来,我们将详细介绍对象池模块中的核心接口和类,帮助大家更好地理解和使用这些组件。

URL工具-UrlUtil
对象池架构设计

← URL工具-UrlUtil 对象池架构设计→

Theme by Vdoing | Copyright © 2025-2026 Hutool | Apache-2.0
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式