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个不同的人在工作
}
}
}
==
==
这个框架有几个核心:
一:工作类,比如说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个不同的人在工作
}
}
}
==
==
相关文章推荐
- Apache对象池插件common-pool学习小结
- common-dbcp.jar和commons-pool.jar引用和bug
- cartographer源码分析(10)-common-thread_pool.h
- weblogic.common.resourcepool.ResourceLimitException: No resources currently available in pool JDBC D
- 对象池common-pool源码分析
- 一个利用common-pool.jar实现线程池的例子
- Common-pool源码编译——小例子
- apache-common-pool
- 【pool】Apache common-pool, common-dbcp源码解读与对象池原理剖析
- apache-common-pool2(配置参数详解,以及资源回收,从池中获取资源,将资源返还给池
- apache common pool
- common-pool
- [转]Apache common-pool, common-dbcp源码解读与对象池原理剖析
- [置顶] apache-common-pool2源码分析
- Apache Common-pool2 参数说明
- Android之SoundPool详细讲解
- Common_Pool
- Apache common-pool, common-dbcp源码解读与对象池原理剖析
- 使用common-pool实现的一个简单的线程池
- java.sql.SQLException: Internal error: Cannot obtain XAConnection weblogic.common.resourcepool.Resou