扫码阅读
手机扫码阅读
通用池化框架commons-pool2功能拓展
267 2024-04-13
我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。
文章来源:
FunTester
扫码关注公众号
摘要
本文介绍了作者在使用Apache Commons Pool2框架时对其功能的拓展应用。文中首先回顾了通用池化框架的基础实践和性能测试。然后,作者提出了一种需求:在硬件资源限制的情况下,如何保证KeyedPool中对象的存活和高频调用的能力,而不是简单地销毁和创建对象。
需求和问题
作者设置了每个KeyedPool的最小空闲对象数为0,最大空闲数为5,总数为10。遇到的问题是,高并发调用导致空闲对象占用了大量系统资源,尽管没有达到最大值。
API的使用和问题
在现有API中,没有提供设置每个KeyedPool的最大空闲时间的功能。作者需要保留每个KeyedPool最大一个空闲对象,但现有API不支持。因此,作者通过获取当前KeyedPool的空闲对象数和所有KeyedPool的状态信息,来实现这一需求。
实现思路
作者提出了三种实现思路:
- 使用定时任务,间隔最大空闲时间扫描所有KeyedPool,并销毁多余的空闲对象。
- 改造对象工厂实现方法,为每个KeyedPool的对象设置标记,并在销毁对象时检查这些标记。
- 为不同的KeyedPool设置优先级,根据优先级允许空闲对象数目的不同,以优化资源分配。
附加信息
最后,作者推荐了其他关于测试和自动化的专题资源,包括原创合集、功能测试、性能测试、Groovy语言、Java、测试社群、测试理论等。
想要了解更多内容?
文章来源:
FunTester
扫码关注公众号
FunTester的其他文章
加入社区微信群
与行业大咖零距离交流学习
软件研发质量管理体系建设
白皮书上线