测试对象池 : 对象池 « Apache类库 « Java

En
Java
1. 图形用户界面
2. 三维图形动画
3. 高级图形
4. 蚂蚁编译
5. Apache类库
6. 统计图
7. 
8. 集合数据结构
9. 数据类型
10. 数据库JDBC
11. 设计模式
12. 开发相关类
13. EJB3
14. 电子邮件
15. 事件
16. 文件输入输出
17. 游戏
18. 泛型
19. GWT
20. Hibernate
21. 本地化
22. J2EE平台
23. 基于J2ME
24. JDK-6
25. JNDI的LDAP
26. JPA
27. JSP技术
28. JSTL
29. 语言基础知识
30. 网络协议
31. PDF格式RTF格式
32. 映射
33. 常规表达式
34. 脚本
35. 安全
36. Servlets
37. Spring
38. Swing组件
39. 图形用户界面
40. SWT-JFace-Eclipse
41. 线程
42. 应用程序
43. Velocity
44. Web服务SOA
45. 可扩展标记语言
Java 教程
Java » Apache类库 » 对象池屏幕截图 
测试对象池

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

public class TestObjectPool {

  public static void main(String args[]) throws Exception {

    GenericObjectPool pool = new GenericObjectPool();
    pool.setFactory(new EmployeeFactory());

    /*First way of initializing pool
    pool.setMinIdle(5);
    pool.setTimeBetweenEvictionRunsMillis(500);
    Thread.currentThread().sleep(600);*/

    /* second, and preferred way */
    for(int i = 0; i < 5; ++i) {
      pool.addObject();
    }

    // pool.setTestOnReturn(true);
    pool.setMinEvictableIdleTimeMillis(1000);
    pool.setTimeBetweenEvictionRunsMillis(600);

    System.err.println("Number of employees in pool: " + pool.getNumIdle());

        Thread.currentThread().sleep(1500);

    Employee employee = (Employee)pool.borrowObject();

    employee.setName("Fred Flintstone");
    employee.doWork();

    System.err.println("Employee: "  + employee);

    pool.returnObject(employee);

        System.err.println("Number of employees in pool: " + pool.getNumIdle());
  }
}


--------------------------------------------


public class Employee {

  private static int base = 0;


  private int id;

  private String name;

  public Employee() {
    this.id = base++;
  }

  public int getId() {
    return this.id;
  }

  public String getName() {
    return this.name;
  }

  public void setName(String name) {
    this.name = name;
  }

  public void doWork() {
    // does nothing
  }

  public String toString() {
    return ("Id: " this.id + ", Name: " this.name);
  }

  public void finalize() {
    System.err.println("Employee " + toString() " made redundant");
  }
}

-----------------------------

import org.apache.commons.pool.BasePoolableObjectFactory;

public class EmployeeFactory extends BasePoolableObjectFactory {

  public Object makeObject() {
    return new Employee();
  }

  public boolean validateObject(Object obj) {
    if(obj instanceof Employee) {
      if(((Employee)obj).getName() == null)
        return true;
    }
    return false;
  }

  public void passivateObject(Object objthrows Exception {
    if(obj instanceof Employee) {
      ((Employee)obj).setName(null);
    else throw new Exception("Unknown object");
  }
}

---------------------------------------------
import org.apache.commons.pool.BaseKeyedPoolableObjectFactory;

public class SkilledEmployeeFactory extends BaseKeyedPoolableObjectFactory {

  public Object makeObject(Object key) {
    if(key == null || !(key instanceof String|| ((String)key).length() == 0)
      throw new IllegalArgumentException("Invalid key specified");
    return new SkilledEmployee(key.toString());
  }

  /*public boolean validateObject(Object key, Object obj) {
    if(obj instanceof Employee) {
      if(((Employee)obj).getName() == null)
        return true;
    }
    return false;
  }

  public void passivateObject(Object obj) throws Exception {
    if(obj instanceof Employee) {
      ((Employee)obj).setName(null);
    } else throw new Exception("Unknown object");
  }*/
}

-------------------------------------
public class SkilledEmployee extends Employee {

  private String skill;

  public SkilledEmployee(String skill) {
    this.skill = skill;
  }

  public String getSkill() {
    return this.skill;
  }

  public String toString() {
    return getSkill() " -- " + getName();
  }
}
           
       
TestObjectPool.zip( 1,218 k)
Related examples in the same category
1. Keyed Object Pool
2. 测试冗余对象池
3. 软参考对象池演示
www.java2java.com | Contact Us
Copyright 2010 - 2030 Java Source and Support. All rights reserved.
All other trademarks are property of their respective owners.