`
jayce洪
  • 浏览: 23435 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

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:强制创建新的链接资源

 

分享到:
评论

相关推荐

    Apache commons-pool2-2.4.2源码学习笔记

    通过分析这些图像和源码,我们可以了解到Apache Commons Pool2的内部工作机制,如对象的生命周期管理、池的配置和性能优化等方面的知识。此外,源码阅读也能帮助我们理解设计模式的应用,如工厂模式、池模式等,并能...

    commons-pool2-2.10.0.jar

    6. **使用示例**:在实际应用中,用户可以通过以下步骤使用Apache Commons Pool 2: - 引入依赖:在项目中添加`commons-pool2-2.10.0.jar`。 - 创建池配置:例如,`GenericObjectPoolConfig config = new ...

    commons-pool2-2.4.2-bin.zip

    Apache Commons Pool2是实现这一目标的工具库。 Apache Commons Pool2的主要特点包括: 1. **对象池接口**:Pool2提供了一个通用的对象池接口(`ObjectPool`),它定义了基本的池操作,如借用、归还和验证对象。这...

    commons-pool2-2.6.0 jar包

    Pool2库提供了基础的对象池接口和实现,包括基本的`ObjectPool`接口以及`GenericObjectPool`,后者是一个实现了`ObjectPool`接口的通用对象池类。此外,它还提供了各种配置选项和策略,如最大池大小、空闲超时等,以...

    commons-pool 等jar包

    DBCP(Database Connection Pool)是Apache Jakarta项目中的一个子项目,它利用了commons-pool对象池机制来实现数据库连接的复用,从而减少创建和释放数据库连接时的开销。Tomcat,一个广泛使用的Java应用服务器,...

    commons pool dbcp 包

    Apache Commons DBCP(Database Connection Pool)和Apache Commons Pool是两个在Java开发中常用的开源库,主要用于数据库连接池管理和对象池服务。它们是Apache软件基金会的项目,为Java应用程序提供了高效且可配置...

    commons-pool.jar包下载

    2. **对象池实现**:除了API,Commons Pool还提供了一些预定义的对象池实现,如`GenericObjectPool`,这是一个通用的对象池实现,支持基本的池策略,如最大活动对象数、空闲对象的最大数量等。 3. **池化策略**:...

    commons-pool-1.6.jar

    Apache Commons Pool提供了多种实现,包括基于先进先出(FIFO)策略的`GenericObjectPool`,以及基于最大空闲时间的`GenericKeyedObjectPool`。 **数据库连接池(DBCP)** DBCP是Database Connection Pool的缩写,...

    commons-pool-1.2.jar.zip

    Apache Commons Pool 提供了一套通用的框架,支持不同类型的对象池实现,包括数据库连接池、线程池等。 二、Commons Pool 1.2 主要特性 1. **对象池API**:提供了一套完整的API接口,包括Poolable、PooledObject、...

    commons-poo ljar包

    在具体使用Apache Commons Pool时,我们需要创建一个实现了`ObjectPool`接口的对象,并指定池化对象的工厂。例如,如果我们想要创建一个线程池,我们可以使用`ThreadPool`类,它实现了`ObjectPool`接口并使用`...

    commons-pool.jar commons-dbcp-1.2.jar

    Commons Pool 提供了一组接口和类,包括 `Poolable` 接口、`ObjectPool` 接口和各种实现类,如 `GenericObjectPool`。开发者可以通过这些工具来创建自定义的对象池,适应不同的应用场景。 接下来,Apache Commons ...

    commons-pool-1.6.rar

    2. **多种池实现**:Apache Commons Pool 提供了多种池实现,如 `GenericObjectPool` 和 `GenericKeyedObjectPool`,它们分别支持无键和键值对对象的池化。这些实现提供了配置参数来调整池的行为,如最大活动对象数...

    commons-pool-1.5.2-bin.zip

    4. `jakarta-pool-1.5.2.jar`: 这是Apache Commons Pool的核心库文件,包含了所有必需的类和接口,用于实现对象池。 5. `jakarta-pool-1.5.2-sources.jar`: 源代码jar文件,可以用于查看和理解Pool库的内部工作原理...

    commons-pool2-2.9.0.jar

    Apache Commons Pool 2 是一个Java对象池库,用于管理和复用有限资源,如数据库连接、线程、数据缓冲等。这个库是Apache软件基金会开发的,版本号为2.9.0,它提供了高效的对象池化机制,有助于提高应用程序的性能和...

    插件commons-pool-1.3

    2. **API接口**: Commons Pool 提供了 `Poolable` 接口和 `ObjectPool` 接口,前者标记了可池化的对象,后者代表对象池并提供了对象的获取、归还、销毁等操作。 3. **基础类和实现**:库中包含了一些基础类,如 `...

    commons-pool2-2.4.2-src

    在"commons-pool2-2.4.2-src"源码包中,我们可以深入理解Apache Commons Pool2的工作原理和实现细节。源码分析有助于开发者掌握如何设计和使用高效的对象池,并且可以定制自己的对象池策略。 1. **核心接口和类**:...

    demo-commons-pool:对象池框架

    Apache Commons Pool是Java领域中广泛使用的一个对象池实现库,它提供了灵活、高效的对象池服务。本文将深入探讨对象池的概念,以及Apache Commons Pool的使用方法和核心特性。 一、对象池基础理论 对象池的基本...

    commons-pool-1.6-bin

    8. **监控和统计**: 为了便于性能分析和调试,Apache Commons Pool 提供了统计信息和监控工具,可以跟踪对象的借用、归还、创建和销毁等操作。 在实际应用中,Apache Commons Pool 可以与数据库连接池(如C3P0或...

    commons-pool-1.5.4-src.tar.gz

    2. **线程安全**:Apache Commons Pool 1.5.4 为多线程环境设计,保证了在并发环境下的正确性。通过锁机制和同步策略,确保了对象池在多个线程同时访问时的稳定性和一致性。 3. **配置灵活性**:Pool 提供了丰富的...

    commons-pool-current.rar

    Apache Commons Pool 提供了一种通用的框架,用于实现对象池。这个库的核心类包括`ObjectPool`接口、`BaseObjectPool`抽象类以及`GenericObjectPool`和`GenericKeyedObjectPool`等实现。`ObjectPool`接口定义了对象...

Global site tag (gtag.js) - Google Analytics