Apache common pool 用法ITeye - 亚美娱乐

Apache common pool 用法ITeye

2019-01-13 14:14:02 | 作者: 若云 | 标签: 实例,办法,运用 | 浏览: 282

Apache Common Pool的运用

http://commons.apache.org/pool/examples.html

!--[if !supportEmptyParas]-- !--[endif]--

Apache CommonPool包含许多现已完成的Pool,常用的Pool有GenericObjectPool,GenericKeyedObjectPool。本文首要叙述怎么运用以上两种Pool,其它的用法相似。运用Common Pool需求到Apache网站下载commons-pool.jar和commons-collections.jar两个包。

一.GenericObjectPool类

       GenericObjectPool类在rg.apache.commons.pool.impl包中,结构函数如下:

public GenericObjectPool(org.apache.commons.pool.PoolableObjectFactory ,
                        int ,byte ,long , boolean ,boolean )
        由结构函数的界说能够看出,要想运用GenericObjectPool,必需要完成PoolableObjectFactory接口。然后,运用GenericObjectPool的办法取得Pool中的实例。    
 !--[if !supportEmptyParas]-- !--[endif]-- 
 !--[if !supportLists]-- 
 
1.           完成PoolableObjectFactory接口

完成PoolableObjectFactory接口,需完成以下办法。其间makeObject在创立实例时调用,经过自界说代码生成并回来需求的实例,activateObject办法在从Pool中拿出一个实例的一起调用,passivateObject办法在实例返还给Pool时调用。

public class MyPoolableObjectFactory implements PoolableObjectFactory {
    //创立目标实例。一起能够分配这个目标适用的资源。
public Object makeObject() throws Exception {
         Connection con = getConnection();
     renturn con;
}
// 毁掉目标,实际上供给了开释目标占用资源的接口。
public void destroyObject(Object obj) throws Exception {
     System.out.println("destory Object");
}
//查询目标有效性,这个办法一般在 activateObject 办法履行后调用
public boolean validateObject(Object obj) {
     return true;
}
// 激活一个目标。
public void activateObject(Object obj) throws Exception {
    System.out.println("active object");
}
//挂起一个目标
public void passivateObject(Object obj) throws Exception {
     System.out.println("return object");
}
}
 !--[if !supportEmptyParas]-- !--[endif]-- 
 !--[if !supportLists]-- 
 
2. 运用GenericObjectPool

完成PoolableObjectFactory接口后,能够直接运用GenericObjectPool结构函数取得其实例,代码如下:

org.apache.commons.pool.PoolableObjectFactory    factory = new MyPoolableObjectFactory();

GenericObjectPool   pool= new GenericObjectPool(factory, 100,GenericObjectPool.WHEN_EXHAUSTED_BLOCK, 100, true, true);

其间,第一个100为最大激活数,第二个为最大等候数。

!--[if !supportEmptyParas]-- !--[endif]--

2.1.GenericObjectPool参数设置

       GenericObjectPool有几个重要的参数:最大激活数(maxActive),最大等候数(maxWait),最大闲暇数(maxIdle),最大闲暇时刻(maxIdleTime)等。

A). 最大激活数-在Pool中注册,而且正在运用的实例数。调用pool.setMaxActive()办法设置。

B). 最大等候数-在Pool中注册,等候获取实例的请求数。调用pool.setMaxWait()办法设置。

C). 最大闲暇数-在Pool中注册,而且正处于闲暇状况的实例数。调用pool.setMaxIdle()办法设置

D). 最大闲暇时刻-在Pool中,实例闲暇的最长时刻。调用pool.setMinEvictableIdleTimeMillis(maxIdleTime)及pool. setTimeBetweenEvictionRunsMillis(maxIdleTime)办法一起设置。

!--[if !supportEmptyParas]-- !--[endif]--

2.2.Pool中实例的操作

       Pool中实例的操作,首要包含实例的获取及实例的返还。运用完实例之后,需及时返还,不然实例仍是处理激活状况,不能为被后边的请求重复运用。

A).实例的获取运用pool.borrowObject()办法

B).实例返还运用pool.returnObject(con)办法,其间con为pool中获取的实例。

!--[if !supportEmptyParas]-- !--[endif]--

二.GenericKeyedObjectPool类

       GenericKeyedObjectPool类在rg.apache.commons.pool.impl包中,结构函数如下:

public GenericObjectPool(org.apache.commons.pool.KeyedPoolableObjectFactory ,
                        int ,byte ,long , boolean ,boolean )
        由结构函数的界说能够看出,要想运用GenericKeyedObjectPool,必需要完成KeyedPoolableObjectFactory接口。然后,运用GenericKeyedObjectPool的办法取得Pool中的实例。    
 !--[if !supportEmptyParas]-- !--[endif]-- 
 !--[if !supportLists]-- 
 
1.完成KeyedPoolableObjectFactory接口

完成KeyedPoolableObjectFactory接口,需完成以下办法。其间makeObject在创立实例时调用,经过自界说代码生成并回来需求的实例,留意要以一个形参为key创立;activateObject办法在从Pool中拿出一个实例的一起调用,passivateObject办法在实例返还给Pool时调用。要完成的办法比PoolableObjectFactory要完成的办法都多了一个参数key。

public class MyKeyedPoolableObjectFactory implements KeyedPoolableObjectFactory {
    //创立目标实例。一起能够分配这个目标适用的资源。
public Object makeObject(Object key) throws Exception {
         Connection con = getConnection(key);
     renturn con;
}
// 毁掉目标,实际上供给了开释目标占用资源的接口。
public void destroyObject(Object key, Object obj) throws Exception {
     System.out.println("destory Object");
}
//查询目标有效性,这个办法一般在 activateObject 办法履行后调用
public boolean validateObject(Object key, Object obj) {
     return true;
}
// 激活一个目标。
public void activateObject(Object key, Object obj) throws Exception {
    System.out.println("active object");
}
//挂起一个目标
public void passivateObject(Object key, Object obj) throws Exception {
     System.out.println("return object");
}
}
 !--[if !supportEmptyParas]-- !--[endif]-- 
 !--[if !supportLists]-- 
 
 
2.运用GenericKeyedObjectPool

完成KeyedPoolableObjectFactory接口后,能够直接运用GenericKeyedObjectPool结构函数取得其实例,代码如下:

org.apache.commons.pool.KeyedPoolableObjectFactory factory = new MyKeyedPoolableObjectFactory();

GenericKeyedObjectPool pool= new GenericKeyedObjectPool(factory, 100,GenericObjectPool.WHEN_EXHAUSTED_BLOCK, 100, true, true);

其间,第一个100为最大激活数,第二个为最大等候数。

!--[if !supportEmptyParas]-- !--[endif]--

2.1.GenericKeyedObjectPool参数设置

       GenericKeyedObjectPool参数设置与GenericObjectPool相似。

!--[if !supportEmptyParas]-- !--[endif]--

2.2.Pool中实例的操作

       Pool中实例的操作,首要包含实例的获取及实例的返还。运用完实例之后,需及时返还,不然实例仍是处理激活状况,不能为被后边的请求重复运用。带key的Pool的操作办法,也相应的都加了参数key。

A).实例的获取运用pool.borrowObject(Object key)办法

B).实例返还运用pool.returnObject(Object key,Object con)办法,其间con为pool中获取的实例。

版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表亚美娱乐立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章

阅读排行

  • 1
  • 2
  • 3
  • 4
  • 5

    Digester 解析XMLITeye

    元素,参数,解析
  • 6

    运用文件体系ITeye

    目录,读取,是否
  • 7
  • 8
  • 9

    Deep diving into CloningITeye

    文章,摘自,首先
  • 10

    Spring 整合 junit4 测验ITeye

    测验,配置文件,试用