基本对象池的使用

王朝other·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

/**

* <pTitle: 基本对象池(org.apache.commons.pool.impl.GenericObjectPool)的使用 </p

* <pDescription:

* 测试 org.apache.commons.pool.impl.GenericObjectPool 和 org.apache.commons.pool.PoolableObjectFactory的使用.</p

* <p基本对象池的使用,

* <LIclass TestGenericObjectPool 表示一个测试使用对象池的具体例子

* <LIclass WdzPoolableObjectFactory 表示1个自己定义的生成对象的工厂

* <LIclass Student 表示 需要使用对象池来维护的类</p

* <p

* 引用了 common-collcetions-2.1 ,commons-pool-1.1

* </p

* <pCopyright: Copyright (c) 2004</p

* <pCompany: netsky</p

* @author wdz( hotmail =wdz123@hotmail.com)

* @version 1.0

* @see {@link TestGenericObjectPool},

* org.apache.commons.pool.impl.GenericObjectPool,org.apache.commons.pool.PoolableObjectFactory

*/

public class Student {

private String sex;

private String name;

private int studentid;

private int age;

public Student() {

}

public static void main(String[] args) {

Student student1 = new Student();

}

public String getSex() {

return sex;

}

public void setSex(String sex) {

this.sex = sex;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getStudentid() {

return studentid;

}

public void setStudentid(int studentid) {

this.studentid = studentid;

}

public void clear() {

studentid = 0;

name = "";

age = 0;

sex = "";

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

public String toString() {

return "id =" + studentid + ",name =" + name + ",age=" + age + ",sex=" +

sex;

}

}

Class WdzPoolableObjectFactory --code

package impl_genericobjectpool_test;

import org.apache.commons.pool.impl.*;

import org.apache.commons.pool.*;

/**

* <pTitle: 基本对象池(org.apache.commons.pool.impl.GenericObjectPool)的使用 </p

* <pDescription:

* 测试 org.apache.commons.pool.impl.GenericObjectPool 和 org.apache.commons.pool.PoolableObjectFactory的使用.</p

* <p基本对象池的使用,

* <LIclass TestGenericObjectPool 表示一个测试使用对象池的具体例子

* <LIclass WdzPoolableObjectFactory 表示1个自己定义的生成对象的工厂

* <LIclass Student 表示 需要使用对象池来维护的类</p

* <p

* 引用了 common-collcetions-2.1 ,commons-pool-1.1

* </p

* <pCopyright: Copyright (c) 2004</p

* <pCompany: netsky</p

* @author wdz( hotmail =wdz123@hotmail.com)

* @version 1.0

*/

public class WdzPoolableObjectFactory

implements PoolableObjectFactory {

/**

* 创建对象实例。同时可以分配这个对象适用的资源。

* **/

public Object makeObject() throws Exception {

return new Student();

};

/**

* 销毁对象,实际上提供了释放对象占用资源的接口。

* destroyObject is invoked on every instance when it is being "dropped"

* from the pool (whether due to the response from validateObject,

* or for reasons specific to the pool implementation.)

* */

public void destroyObject(Object obj) throws Exception {

}

/***

* 这个方法一般在 activateObject 方法执行后调用

* 检查对象的有效性

* validateObject is invoked in an implementation-specific fashion to

* determine if an instance is still valid to be returned by the pool.

* It will only be invoked on an "activated" instance.

* **/

public boolean validateObject(Object obj) {

return true;

}

/**

* 激活一个对象。

* activateObject is invoked on every instance before it is returned from the pool.

* **/

public void activateObject(Object obj) throws Exception {

}

/**

* 挂起一个对象

* passivateObject is invoked on every instance when it is returned to the pool

* **/

public void passivateObject(Object obj) throws Exception {

if (obj instanceof Student) {

( (Student) obj).clear();

}

}

}

package impl_genericobjectpool_test;

import org.apache.commons.pool.impl.*;

import org.apache.commons.pool.*;

/**

* <pTitle: 基本对象池(org.apache.commons.pool.impl.GenericObjectPool)的使用 </p

* <pDescription:

* 测试 org.apache.commons.pool.impl.GenericObjectPool 和 org.apache.commons.pool.PoolableObjectFactory的使用.</p

* <p基本对象池的使用,

* <LIclass TestGenericObjectPool 表示一个测试使用对象池的具体例子

* <LIclass WdzPoolableObjectFactory 表示1个自己定义的生成对象的工厂

* <LIclass Student 表示 需要使用对象池来维护的类</p

* <p

* 引用了 common-collcetions-2.1 ,commons-pool-1.1

* </p

* <pCopyright: Copyright (c) 2004</p

* <pCompany: netsky</p

* @author wdz( hotmail =wdz123@hotmail.com)

* @version 1.0

*/

public class TestGenericObjectPool {

private void testBorrowObject(GenericObjectPool pool, int kk) {

try {

Student[] student = new Student[10];

for (int i = 0; i < 10; i++) {

student[i] = (Student) (pool.borrowObject());

student[i].setStudentid(i * 10000 + kk);

student[i].setAge(i * 1000 + kk);

student[i].setName("wdzname" + i * 100 + kk);

}

for (int i = 0; i < 10; i++) {

System.out.println("student[" + i + "]=" + student[i]);

pool.returnObject(student[i]);

if (i == 9) {

//察看对象回到对象池的状态

System.out.println("****student[9]=" + student[9]);

}

}

}

catch (Exception ex) {

ex.printStackTrace();

}

}

public TestGenericObjectPool() {

org.apache.commons.pool.PoolableObjectFactory factory = new

WdzPoolableObjectFactory();

GenericObjectPool pool = new GenericObjectPool(factory, 4000 * 10,

GenericObjectPool.WHEN_EXHAUSTED_GROW, 3000 * 10, true, true);

System.out.println("group1");

testBorrowObject(pool, 1);

System.out.println("group2");

testBorrowObject(pool, 2);

}

public static void main(String[] args) {

TestGenericObjectPool test = new TestGenericObjectPool();

}

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航