您的位置:首页 > 其它

common-pool2 讲解。

2016-09-08 20:00 246 查看
  现在很多第三方框架都使用common-pool2作为对象池。

这个框架有几个核心:

一:工作类,比如说connetion,比如说一个可以干活(work)的Person。

二:工厂类,生产Person的工厂。工厂类是基于PooledObjectFactory->BasePooledObjectFactory的

三:配置类,对象池活跃对象个数等信息都需要配置:所遇需要配置类,基于GenericObjectPoolConfig

四:对象池Pool,GenericObjectPool

实例讲解:

1 Person类。

public class Person {
private String name;

public String getName() {
return name;
}

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

public void work() {
System.out.println(name + " 在干活 ");
}
}

2工厂类
public class PersonFactory extends BasePooledObjectFactory<Person> {
public Person create() throws Exception {
String name = Math.random() + "";
Person p = new Person();
p.setName(name);
return p;
}
public PooledObject<Person> wrap(Person obj) {
return new DefaultPooledObject<Person>(obj);
}
}3配置
public class MyPoolConfig extends GenericObjectPoolConfig {
//在构造方法中可以配置参数,一般会在spring的xml文件中配置bean的方式配置对象池信息
public MyPoolConfig() {
super();
}
}4测试运行
public class Main {

public static void main(String[] args) throws Exception {
// 实例化配置类
MyPoolConfig myPoolConfig = new MyPoolConfig();
// 设置最大工作人数
myPoolConfig.setMaxTotal(10);
// new 一个对象池。
GenericObjectPool<Person> personPool = new GenericObjectPool<>(
new PersonFactory(), myPoolConfig);
// 测试1;
while (true) {
// 取出对象进行工作,没有释放对象。
Person p = personPool.borrowObject();
p.work();
// 代码运行后显示,最多有10个不同的人在工作
}

}
}

==
==
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: