当前位置:网站首页>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.如果怕有些对象根本用不到,一开始就初始化出来,会导致资源浪费,那么建议试试加锁,不过这样的话就会影响到整体查询效率了。
边栏推荐
猜你喜欢

Flutter学习2-dart学习

MySQL基础(一)---基础认知及操作

使用IDEA连接TDengine服务器

开发一套高容错分布式系统

Flutter learning three-Flutter basic structure and principle

Flutter学习5-集成-打包-发布

Visibility of multi-column attribute column elements: display, visibility, opacity, vertical alignment: vertical-align, z-index The larger it is, the more it will be displayed on the upper layer

8.04 Day35-----MVC三层架构

About the installation of sklearn library

u-boot debugging and positioning means
随机推荐
人性的弱点
说说数据治理中常见的20个问题
Cryptography Series: PEM and PKCS7, PKCS8, PKCS12
动力小帆船制作方法简单,电动小帆船制作方法
【cesium】加载并定位 3D Tileset
【cesium】元素高亮显示
数字_获取指定位数的小数
Day14 jenkins部署
电话溥功能
Excel画图
phone call function
为什么刚考完PMP,就开始准备软考了?
flex布局青蛙游戏通关攻略
entry point injection
mysql数据库表什么字段类型的存储长度最大?
Redis哨兵模式配置文件详解
逆向理论知识4
基于Web的商城后台管理系统的设计与实现
Dephi逆向工具Dede导出函数名MAP导入到IDA中
8.04 Day35-----MVC three-tier architecture