apachecommonpool2简介

更新时间:2023-05-12 01:43:00 阅读: 评论:0

对象池模式
优点; 复⽤池中对象,没有分配内存和创建堆中对象的开销, 没有释放内存和销毁堆中对象的开销, 进⽽减少垃圾收集器的负担, 避免内存抖动;不必重复初始化对象状态。
1. 并发环境下,对象池操作的同步成为⼀⼤开销;
4. blockWhenExhausted只是idle为空时是否等待,maxWaitMillis只是等待多久
5. 池化对象!=null;factory#activateObject
6. testOnBorrow || (create && testOnCreate) factory#validateObject
return的流程
1. 根据obj从allObjects取出polledObject p
2. 判空;将p状态置为RETURN
3. 若getTestOnReturn参数为true,进⾏factory#validateObject
4. 对p进⾏factory#passivateObject,与初始化相反
5. 更新p状态为IDLE
6. 归还Pool:Pool的idle实例达到上限或者Pool已经关闭,销毁之,否则将p加⼊到LinkedBlockingDeque中。
⾃定义对象池可以依赖GenericObjectPool以及DefaultPooledObject,只实现PooledObjectFactory即可。
对象池属性
s.pool2.impl.GenericObjectPool对象池属性,控制对象池产⽣对象的⾏为;
全部属性由s.pool2.impl.BaGenericObjectPool描述:
属性值说明
borrow:
maxTotal long;默认-1idle队列为空,idle.len < maxTotal可创建,-1时maxTotal为整数最⼤值
blockWhenExhauste d
true[默
认]/fal
idle空,maxTotal达到,是否等待队列
maxWaitMillis long;默认-1idle空,maxTotal达到blockWhenExhausted=true,等待队列时长;-1⼀直等
testOnBorrow true/fal[默
认]
borrow时,控制objFactory#validateObject
testOnCreate true/fal[默
认]
borrow时,通过create获得,控制objFactory#validateObject
return:
testOnReturn true/fal[默
认]
objPool#returnObj,控制 objFactory#validateObject
lifo
true[默
认]/fal
true-LIFO idle队列后进先出; fal-FIFO idle队列先进先出
五、⾃定义对象池
使⽤默认对象池GenericObjectPool,只需定义池化对象⼯⼚即可。官⽅提供了demo 官⽅demo
以下为简化,更容易看清本质:
池化对象⼯⼚:产⽣StringBuffer对象

本文发布于:2023-05-12 01:43:00,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/885757.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:对象   属性   没有   等待   看清   内存   控制
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图