扫码阅读
手机扫码阅读

通用池化框架commons-pool2功能拓展

200 2024-04-13

摘要

本文介绍了作者在使用Apache Commons Pool2框架时对其功能的拓展应用。文中首先回顾了通用池化框架的基础实践和性能测试。然后,作者提出了一种需求:在硬件资源限制的情况下,如何保证KeyedPool中对象的存活和高频调用的能力,而不是简单地销毁和创建对象。

需求和问题

作者设置了每个KeyedPool的最小空闲对象数为0,最大空闲数为5,总数为10。遇到的问题是,高并发调用导致空闲对象占用了大量系统资源,尽管没有达到最大值。

API的使用和问题

在现有API中,没有提供设置每个KeyedPool的最大空闲时间的功能。作者需要保留每个KeyedPool最大一个空闲对象,但现有API不支持。因此,作者通过获取当前KeyedPool的空闲对象数和所有KeyedPool的状态信息,来实现这一需求。

实现思路

作者提出了三种实现思路:

  1. 使用定时任务,间隔最大空闲时间扫描所有KeyedPool,并销毁多余的空闲对象。
  2. 改造对象工厂实现方法,为每个KeyedPool的对象设置标记,并在销毁对象时检查这些标记。
  3. 为不同的KeyedPool设置优先级,根据优先级允许空闲对象数目的不同,以优化资源分配。

附加信息

最后,作者推荐了其他关于测试和自动化的专题资源,包括原创合集、功能测试、性能测试、Groovy语言、Java、测试社群、测试理论等。

想要了解更多,点击 查看原文