apache commons pool2: ObjectPool类族实现分析

http://shmilyaw-hotmail-com.iteye.com/blog/1986566

 

首先通过factory.makeObject来创建对象,然后通过validateObject验证对象,验证通过之后再passivateObject,将它加入到idleReferences里面。这里凡是创建的对象不管是不是合法的都会加入到allReferences。这个allReferences相当于一个记录本一样,所有打过交道的对象都会在他这边有备案。所以我们在查找一些对象引用的时候会用到它。

 

http://www.jianshu.com/p/b0189e01de35

 

  • lifo:连接池放池化对象方式,默认为true

    true:放在空闲队列最前面
    false:放在空闲队列最后面

  • fairness:等待线程拿空闲连接的方式,默认为false

    true:相当于等待线程是在先进先出去拿空闲连接

  • maxWaitMillis:当连接池资源耗尽时,调用者最大阻塞的时间,超时将跑出异常。单位,毫秒数;默认为-1.表示永不超时. 默认值 -1

    maxWait:commons-pool1中

  • minEvictableIdleTimeMillis:连接空闲的最小时间,达到此值后空闲连接将可能会被移除。负值(-1)表示不移除;默认值1000L 60L 30L

  • softMinEvictableIdleTimeMillis:连接空闲的最小时间,达到此值后空闲链接将会被移除,且保留“minIdle”个空闲连接数。负值(-1)表示不移除。默认值1000L 60L 30L

  • numTestsPerEvictionRun:默认值 3

  • evictionPolicyClassName:默认值org.apache.commons.pool2.impl.DefaultEvictionPolicy

  • testOnCreate:默认值false

  • testOnBorrow:向调用者输出“链接”资源时,是否检测是有有效,如果无效则从连接池中移除,并尝试获取继续获取。默认为false。建议保持默认值.

  • testOnReturn:默认值false

  • testWhileIdle:向调用者输出“链接”对象时,是否检测它的空闲超时;默认为false。如果“链接”空闲超时,将会被移除;建议保持默认值。默认值false

  • timeBetweenEvictionRunsMillis:“空闲链接”检测线程,检测的周期,毫秒数。如果为负值,表示不运行“检测线程”。默认值 -1L

  • blockWhenExhausted:默认值true

  • jmxEnabled:默认值true

  • jmxNamePrefix:默认值 pool

  • jmxNameBase:默认值 null

  • maxTotal:链接池中最大连接数,默认值8

    commons-pool1 中maxActive改成maxTotal

  • maxIdle:连接池中最大空闲的连接数,默认为8

  • minIdle: 连接池中最少空闲的连接数,默认为0

  • softMinEvictableIdleTimeMillis: 连接空闲的最小时间,达到此值后空闲链接将会被移除,且保留“minIdle”个空闲连接数。默认为-1.

  • numTestsPerEvictionRun: 对于“空闲链接”检测线程而言,每次检测的链接资源的个数。默认为3.

  • whenExhaustedAction: 当“连接池”中active数量达到阀值时,即“链接”资源耗尽时,连接池需要采取的手段, 默认为1:

    0:抛出异常
    1:阻塞,直到有可用链接资源
    2:强制创建新的链接资源

 

猜你喜欢

转载自jaycehong.iteye.com/blog/2363673