




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Java对象池示例对象池使用的基本思路是:将用过的对象保存起来,等下一次需要这种对象的 时候,再拿出来重复使用,从而在一定程度上减少频繁创建对象所造成的开销。 并非所有对象都适合拿来池化一一因为维护对象池也要造成一定开销。对生成时开 销不大的对象进行池化,反而可能会出现“维护对象池的开销”大于“生成新对象 的开销”,从而使性能降低的悄况。但是对于生成时开销可观的对象,池化技术就 是提高性能的有效策略了。下面是构建对象池的一个例子:public class ObjectPool private int numObjects = 10; / 对象池的大小 private int maxObject
2、s =50; /对象池最大的大小private Vector objects = null; /存放对象池中 对象的向量(PooledObject类型)public ObjectPool() /*创建一个对象池*材/public synchronized void createPool()/确保对象池没有创建。如果创建了,保存对象的向量objects不会为空if (objects != null) return; /如果己经创建,则返回/创建保存对象的向量,初始时有0个元素objects = new Vector();/根据numObjects中设置的值,循环创建指定数LI的对象for (in
3、t x二0; x numObjects; x+) if (objectssize() = 0)&thisobjectssize() this.maxObjects) Object obj = new Obj ():objects. addElement(new PooledObject(obj);public synchronized Object getObject()/确保对象池己被创建if (objects = null) return null; /对象池还没创建,则返回null Object conn = getFreeObject() : /获得一个可用的对象/如果目前没有 可以使
4、用的对象,即所有的对象都在使用中while (conn = null) wait(250);conn = getFreeObject() : /重新再试,直到获得可用的对象,如果/ getFreeObject()返回的为null,则表明创建一批对象后也不可获得可用 对象return conn;/返回获得的可用的对象/*本函数从对象池对象objects中返回一个可用的的对象,如果*当前没有可用的对象,则创建儿个对象,并放入对象池中。*如果创建后,所有的对象都在使用中,则返回null */private Object getFreeObject()/从对象池中获得一个可用的对象Object obj
5、 = findFreeObject();辻(obj = null) createObjects (incrementalObjects) ; /如果LI前对象池中没有可用的对象,创建一些对象/重新从池中查找是否有可用对象obj = findFreeObject ():如果创建对象后仍获得不到可用的对象,则返回null if (obj = null)return null:return obj;/*查找对象池中所有的对象,查找一个可用的对象,*如果没有可用的对象,返回null */private Object findFreeObject()Object obj = null:PooledObj
6、ect pObj = null:/获得对象池向量中所有的对象Enumeration enumerate =objects elements();/遍历所有的对象,看是否有可用的对象while(enumerate hasMoreE1ements() pObj = (PooledObject) enumeratenextElement():如果此对象不忙,则获得它的对象并把它设为忙辻(!pObj.isBusy() obj = pObj getObject ();pObj setBusy (true);return obj;/返回找到到的可用对象*此函数返回一个对象到对象池中,并把此对象置为空闲。*
7、所有使用对象池获得的对象均应在不使用此对象时返回它。*/public void returnObject(Object obj) /确保对象池存在,如果对象没有创建(不存在),直接返回辻(objects = null) return;PooledObject pObj = null;Enumeration enumerate = objectselements();/遍历对象池中的所有对象,找到这个要返回的对象对象while(enumerate hasMoreE1ements() pObj = (PooledObject) enumeratenextElement();/先找到对象池中的要返回
8、的对象对象if (obj = pObj. getObject () /找到了,设置此对象为空闲状态pObj setBusy(false);break;/*关闭对象池中所有的对象,并清空对象池。*/public synchronized void closeObjectPool() /确保对象池存在,如果不存在,返回 辻(objects = null) return;PooledObject pObj = null;Enumeration enumerate = objects, elements();while (enumerate. hasMoreElements() pObj = (Poo
9、ledObject) enumerate. nextElement();如果忙,等 5 秒 if (pObj. isBusyO) wait(5000); 等 5 秒/从对象池向量中删除它objects. removeElement (pObj):/置对象池为空objects = null;/*使程序等待给定的毫秒数*/private void wait(int mSeconds) try Thread, sleep(mSeconds);catch (InterruptedException e) /*内部使用的用于保存对象池中对象的类。*此类中有两个成员,一个是对象,另一个是指示此对象是否正在
10、使用的标 志。*/class PooledObject Object objection = null;/ 对象 boolean busy = false; / 此对象是否 正在使用的标志,默认没有正在使用/构造函数,根据一个Object构告一个 PooledObject 对象 public PooledObject (Object objection) this, objection = objection;/返回此对象中的对象public Object getObject() return objection;/ 设置此对象的,对象 public void setObject(Object objection) this, objection = objection;/获得对象对象是否忙public boolean isBusy() return busy;/ 设置对象的对象正在忙 public void setBusy(boolean busy) this, busy = busy;测试类:代码如下:public class ObjectPoolTest public static void main(StringL args) th
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年厂里安全培训考试试题及参考答案(突破训练)
- 2025班组三级安全培训考试试题及参考答案(培优A卷)
- 2025车间安全培训考试试题(原创题)
- 2025中外合作的产品制造合同
- 2025年签订买房合同的应该注意什么事项
- 2025工程咨询委托合同样本
- 日照劳动合同范本
- 2025年四川省劳动合同样本
- 2025年四川省劳动合同书(样本)
- 2025广告设计委托合同范本
- 《光伏发电工程工程量清单计价规范》
- 国家卫生部《综合医院分级管理标准》
- DB64++1996-2024+燃煤电厂大气污染物排放标准
- 初中八年级数学课件-最短路径-将军饮马问题
- 信息论与编码期末考试题(全套)
- 医院医学伦理审查委员会章程
- 废弃物管理制度范本
- 房地产销售价格优惠申请表-
- 绿化自动滴灌系统施工方案
- 处理突发事件流程图
- 第十二讲 建设社会主义生态文明PPT习概论2023优化版教学课件
评论
0/150
提交评论