对象池
来源:互联网 发布:linux 命令行输出结果 编辑:程序博客网 时间:2024/04/29 20:00
对象池中存放的都是一些创建特别耗资源的对象,每次使用都创建很耗资源,所以用对象池预先创建一些对象,需要时从池中取出对象,不需要时将对象放回池中,提高代码效率。
Apache Commons Pool
池对象工厂:
PooledObjectFactory(2.0以前叫PoolableObjectFactory)
PooledObjectFactory必是线程安全的,同一个对象同一时间不会被重复使用。
实现这个接口需要重写五个方法
makeObject:需要对象时使用
validateObject:可在activateObject后调用,确保对象可被还回对象池;可在passivateObject前调用,确保对象可被还回对象池
activateObject:取出对象时,需要activate
passivateObject:还回对象时,需要passivate
destroyObject:对象从对象池中废弃时调用
KeyedPooledObjectFactory与PooledObjectFactory类似,只是多了key参数
KeyedPooledObjectFactory<K,V> vs PoolableObjectFactory<T>
对象池:
GenericObjectPool
可设置对象池特征:LIFO(后进先出)方式、最大最小空闲数、有效性检查。
GenericKeyedObjectPool
对应KeyedPooledObjectFactory
SoftReferenceObjectPool
使用ArrayList保存对象池里的对象,对象池里不保存对象本身,而是保存它们的软引用
特点:可以保存任意多个对象,对象池不会满;取出对象时,如果对象池已空,会创建新对象;内存不足时,池中对象可以回收。
对象池设计
http://ifeve.com/generic-concurrent-object-pool/
- 对象池
- 对象池
- 对象池
- 对象池
- 对象池
- 对象池
- 对象池
- 对象池
- 对象池
- 对象池
- 对象池
- 对象池
- 对象池
- 对象池
- 对象池
- 对象池
- 对象池
- 对象池
- js基本知识
- 递归和尾递归的比较,斐波那契
- 汇编语言中常用的伪指令
- ORA-01034: ORACLE not available Shared memory realm does not exist
- 【剑指offer系列】 二叉树中和为某一值的路径___25
- 对象池
- poj1006.。
- LeetCode *** 160. Intersection of Two Linked Lists
- 【译】通过Hardware Layer提升Android动画性能
- Git基本使用命令
- 判断两点间是否有整数点共线
- linux命令--less|more
- 对比iOS网络组件:AFNetworking VS ASIHTTPRequest
- boost解析json文件