Java对象池技术的原理和其实现.pptx

  1. 1、本文档共16页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Java对象池技术的原理和其实现

Java对象池技术的原理及其实现 ;何为对象池?;为何使用对象池?;使用对象池的思路;基本原理;实现一个对象池,一般会涉及到如下的类:;2)参数对象(ParameterObject)类   该类主要用于封装所创建对象池的一些属性参数,如池中可存放对象的数目的最大值(maxCount)、最小值(minCount)等。 3)对象池(ObjectPool)类   用于管理要被池化对象的借出和归还,并通知PoolableObjectFactory完成相应的工作。它一般包含如下两个方法:    ·getObject:用于从池中借出对象;    ·returnObject:将池化对象返回到池中,并通知所有处于等待状态的线程; 4)池化对象工厂(PoolableObjectFactory)类   该类主要负责管理池化对象的生命周期,就简单来说,一般包括对象的创建及销毁。该类同ObjectPoolFactory一样,也可将其实现为单实例。;一???简单构建对象池的例子;public synchronized Object getObject(){ // 确保对象池己被创建 if (objects == null) { return null; // 对象池还没创建,则返回 null } Object conn = getFreeObject(); // 获得一个可用的对象 // 如果目前没有可以使用的对象,即所有的对象都在使用中 while (conn == null) { wait(250); conn = getFreeObject(); // 重新再试,直到获得可用的对象,如果 // getFreeObject() 返回的为 null,则表明创建一批对象后也不可获得可用对象 } return conn;// 返回获得的可用的对象 } ;/** * 本函数从对象池对象 objects 中返回一个可用的的对象,如果 * 当前没有可用的对象,则创建几个对象,并放入对象池中。 * 如果创建后,所有的对象都在使用中,则返回 null */ private Object getFreeObject(){ // 从对象池中获得一个可用的对象 Object obj = findFreeObject(); if (obj == null) { createObjects(incrementalObjects); //如果目前对象池中没有可用的对象,创建一些对象 // 重新从池中查找是否有可用对象 obj = findFreeObject(); // 如果创建对象后仍获得不到可用的对象,则返回 null if (obj == null) { return null; } } return obj; } ;/** * 查找对象池中所有的对象,查找一个可用的对象, * 如果没有可用的对象,返回 null */ private Object findFreeObject(){ Object obj = null; PooledObject pObj = null; // 获得对象池向量中所有的对象 Enumeration enumerate = objects.elements(); // 遍历所有的对象,看是否有可用的对象 while (enumerate.hasMoreElements()) { pObj = (PooledObject) enumerate.nextElement(); // 如果此对象不忙,则获得它的对象并把它设为忙 if (!pObj.isBusy()) { obj = pObj.getObject(); pObj.setBusy(true); } return obj;// 返回找到到的可用对象 } ;/** * 此函数返回一个对象到对象池中,并把此对象置为空闲。 * 所有使用对象池获得的对象均应在不使用此对象时返回它。 */ public void returnObject(Object obj) { // 确保对象池存在,如果对象没有创建(不存在),直接返回 if (objects == null) { return; } PooledObject pObj = null; Enumeration enumerate = objects.elements(); // 遍历对象池中的所有对象,找到这个要返回的对象对象 while (enumerate.hasMoreElements()) { pObj = (PooledObject) enumerate.next

文档评论(0)

junjun37473 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档