`
xujunJ2EE
  • 浏览: 71072 次
  • 性别: Icon_minigender_1
  • 来自: 南京
文章分类
社区版块
存档分类
最新评论

commons.pool对象池对象获取的方式

阅读更多
在我的印象中,对象池是有最小对象数,最大对象数的,即当容器中的对象数目达到最大数后,请求线程等待空闲对象,此时线程应该是wait,等待return空闲对象的时候notify通知该线程去获得对象。
观察apache.commons.pool的StackObjectPool源码的borrowObject()方法:
while (null == obj) {
            //如果池不空,直接给你一个空闲对象。(注意:这里的对象池_pool放置的都是空闲对象)
            if (!_pool.empty()) {
                obj = _pool.pop();
            } else {
                if(null == _factory) {
                    throw new NoSuchElementException();
                } else {
                    //注意这里new了一个对象出来。
                    [color=red][b]obj = _factory.makeObject();[/b][/color]
                    newlyCreated = true;
                  if (obj == null) {
                    throw new NoSuchElementException("PoolableObjectFactory.makeObject() returned null.");
                  }
                }
            }
................
}

上面可见,commons的pool没有作线程等待处理,而是池里面的空闲对象没有了就调用你自己的factory的makeObject方法,这个方法一般都是直接new一个对象出来,可见,commons的pool对对象的个数并没有限制住,当空闲对象不够用的时候,不是等待,而是直接创建对象。当然,可能commons认为wait会堵塞线程,但实际上,我们有些时候是需要控制对象的数量的
分享到:
评论

相关推荐

    commons-poo ljar包

    Apache Commons Pool库提供了通用的对象池服务,支持不同类型的对象池化,如数据库连接池、线程池等。这个库的核心类包括`Poolable`接口和`ObjectPool`接口。`Poolable`接口标记了可池化的对象,而`ObjectPool`接口...

    commons-pool2-2.10.0.jar

    《Apache Commons Pool 2.10.0:高效对象池详解》 Apache Commons Pool 是一个广泛使用的开源组件,主要用于提供对象池化的实现。在Java世界里,对象池化是一种优化资源管理的重要技术,通过对象池可以减少频繁创建...

    commons-pool2-2.6.0-bin.zip

    Apache Commons Pool2是一个Java对象池库,用于管理可重用对象。对象池是软件设计中的一个概念,它允许程序在需要时重复使用已创建的对象,而不是每次需要时都创建新的对象。这在处理资源密集型对象(如数据库连接或...

    commons-dbcp-1.4.jar和commons-pool-1.5.6.jar

    2. **GenericObjectPool**: 这是Commons Pool中的核心类,实现了对象池的基本功能,如对象的获取、归还、创建和销毁等。 3. **PoolableObjectFactory**: 工厂接口,用于创建和初始化池化对象,DBCP中的连接工厂类...

    commons-pool-1.6.jar.zip

    Apache Commons Pool 是一个Java对象池库,主要用于提供各种对象池实现,以便在多个请求之间复用对象,从而提高性能和减少资源消耗。标题中的"commons-pool-1.6.jar.zip"表明这是一个包含Apache Commons Pool 1.6...

    commons-pool-1.4

    Apache Commons Pool 是一个开源的Java对象池库,版本1.4是该项目的一个稳定版本。对象池的概念是为了提高性能和资源管理,通过复用已创建的对象而不是每次需要时都创建新的对象。在Java应用中,特别是在大型企业级...

    commons-pool.jar

    Apache Commons Pool的核心概念是对象池,它提供了一种机制,使得开发者可以定义一个对象工厂,用于创建和初始化对象,然后在需要时从池中获取,用完后归还回池,而不是直接销毁。这种方式提高了系统的效率,尤其是...

    commons-pool-1.3.jar+commons-collections-3.2.1.jar

    4. **通用对象池API**:Apache Commons Pool提供了一套通用的API,包括`GenericObjectPool`,用于管理和维护各种类型对象的池。 **Apache Commons Collections**: Apache Commons Collections是另一个Apache项目,...

    commons-pool-1.3.jar 和commons-dbcp-1.2.2.jar

    Apache Commons Pool是一个对象池设计模式的实现,它提供了一种在应用程序中高效管理和重用对象的方式。对象池的基本思想是预先创建一定数量的对象,当需要使用时,不再创建新的对象,而是从池中获取已经存在的对象...

    commons.dbcp.BasicDataSource jar包

    对象池化是一种资源管理技术,通过预先创建一组对象并存储在一个池中,当需要时从池中获取,使用完毕后归还到池中,而不是直接销毁。在DBCP中,Pool库负责管理数据库连接的池,确保高效地分配和回收连接。 标签...

    commons-pool 等jar包

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

    commons-dbcp-1.2.2.jar和commons-pool-1.3.jar包

    Apache Commons DBCP (Database Connection Pool) 和 Commons Pool 是Java应用程序中用于数据库连接管理和对象池管理的两个关键组件。在本篇文章中,我们将深入探讨这两个库及其在Java开发中的作用。 首先,Apache ...

    commons-pool2-2.4.2.jar

    Apache Commons Pool2是一个Java对象池库,用于管理资源对象,如数据库连接或网络套接字。这个库的主要目的是提高性能和资源效率,通过重用已创建的对象而不是每次需要时都创建新的。在给定的场景中,`commons-pool2...

    commons-pool-1.6.jar

    Apache Commons Pool是一个通用的对象池服务,它提供了一种有效管理对象资源的方式,特别是对于那些创建和销毁开销大的对象。在本例中,它被用于DBCP(Database Connection Pool),即数据库连接池,这是Java应用中...

    commons-pool.jar包下载

    `commons-pool.jar` 是Apache Commons项目中的一个子项目,全称为Apache Commons Pool,它是一个通用的对象池服务库。对象池是一种设计模式,用于高效管理资源,尤其是那些创建和销毁开销较大的对象。通过对象池,...

    commons-dbcp-1.2.1.jar + commons-pool-1.4.jar + commons-collections-3.2.jar

    `commons-pool-1.4.jar` 是Apache Commons项目中的对象池库,它是DBCP依赖的基础,用于创建和管理对象池,包括数据库连接池。DBCP利用了这个库的功能来管理其内部的数据库连接。Apache Commons Pool提供了基础框架...

    commo-pool, commons-pool commons-pool commons-pool

    Apache Commons Pool 是一个Java对象池库,主要用于提供各种对象池化的实现,以便高效地管理和复用有限的资源。标题中的"commo-pool, commons-pool commons-pool commons-pool"可能是由于输入错误,正确的应该是...

    jedis-2.9.0+commons-pool2-2.4.2redis依赖包

    Apache Commons Pool 2是一个通用的对象池服务,它是Apache Commons组件的一部分。在Jedis中,它被用来实现对象池化,特别是Redis连接的池化。连接池允许应用程序重复使用已经创建的Redis连接,而不是每次需要时都...

Global site tag (gtag.js) - Google Analytics