当前位置:网站首页>Returned object not currently part of this pool
Returned object not currently part of this pool
2022-08-05 05:05:00 【绅士jiejie】
问题背景
使用了org.apache.commons.pool2依赖来做了一些池化操作,把一些已经实例化成功的客户端池化进了对象池,通过池化加快接口的查询效率。
问题分析
以上异常翻译过来就是【返回的对象当前不属于此池】,为什么会出现这种情况,因为导致这个报错的接口允许接收多个参数,然后一并返回结果,为了提升查询效率,所以引入了多线程查询,然后每个线程运行执行的底层逻辑方法中,有一个核心逻辑就是会去对象池中拿客户端对象,如果拿不到就会创建对象池同时生成客户端对象放进对象池中。正常情况下,是不会有这种异常的,问题在于多线程并发情况下,如果底层不加锁什么的,保证同步,那么很可能就会创建出多个对象池,但其实真正有引用关系的又是最后一个生成的对象池,因此前面创建出来的一些对象,在归还对象入池时,就会发现这对象不属于最后一个被引用的对象池,就会报出【Returned object not currently part of this pool】错误。
解决方案
1.如果没有什么懒加载的想法,那么建议可以在项目启动时初始化好对象池。
2.如果怕有些对象根本用不到,一开始就初始化出来,会导致资源浪费,那么建议试试加锁,不过这样的话就会影响到整体查询效率了。
边栏推荐
猜你喜欢
The log causes these pits in the thread block, you have to guard against
The role of DataContext in WPF
Feature preprocessing
Using QR codes to solve fixed asset management challenges
狗仔队:表面编辑多视点图像处理
Homework 8.4 Interprocess Communication Pipes and Signals
for..in和for..of的区别
Excel画图
Flutter 父子组件如何都能收到点击事件
服务器磁盘阵列
随机推荐
ESP32 485光照度
Develop your own node package
uva1325
Redis - 13、开发规范
二叉树基本性质+oj题解析
What is ASEMI photovoltaic diode, the role of photovoltaic diode
The production method of the powered small sailboat is simple, the production method of the electric small sailboat
Flutter学习-开篇
Flutter learning - the beginning
App快速开发建设心得:小程序+自定义插件的重要性
Please write the SparkSQL statement
Machine Learning Overview
u-boot in u-boot, dm-pre-reloc
软件管理rpm
雷克萨斯lm的安全性到底体现在哪里?一起来看看吧
Flex layout frog game clearance strategy
"Recursion" recursion concept and typical examples
ansible各个模块详解
算法---一和零(Kotlin)
The difference between span tag and p