使用commons-pool 框架实现了一个对象池例子。将官网的例子稍微改动了一下而已。
使用的版本是:
<dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-pool2</artifactId> <version>2.4.2</version> </dependency>
对象池实现类:
package com.my.pool.pooledobject; import org.apache.commons.pool2.ObjectPool; public class PooledStringBuffer { private ObjectPool<StringBuffer> pool; public PooledStringBuffer(ObjectPool<StringBuffer> pool) { this.pool = pool; } public boolean print(String data) { boolean flag = false; if(pool!=null) { StringBuffer buf = null; try{ buf = pool.borrowObject(); buf.append(data); System.out.println(buf.toString()); return true; }catch(Exception e) { e.printStackTrace(); }finally { try { pool.returnObject(buf); } catch (Exception e) { e.printStackTrace(); } } } return flag; } }
对象池的工厂:
package com.my.pool.pooledobject; import org.apache.commons.pool2.BasePooledObjectFactory; import org.apache.commons.pool2.PooledObject; import org.apache.commons.pool2.impl.DefaultPooledObject; /** * 先创建,后打包 * */ public class PooledStringBufferFactory extends BasePooledObjectFactory<StringBuffer>{ @Override public StringBuffer create() throws Exception { return new StringBuffer(); } @Override /** * 打包成一个可以调度的对象 */ public PooledObject<StringBuffer> wrap(StringBuffer obj) { return new DefaultPooledObject<StringBuffer>(obj); } @Override /** * 归还后调用的方法 */ public void passivateObject(PooledObject<StringBuffer> pooledObject) { pooledObject.getObject().setLength(0); } }
主类:
package com.my.pool.main; import org.apache.commons.pool2.impl.GenericObjectPool; import org.apache.commons.pool2.impl.GenericObjectPoolConfig; import com.my.pool.pooledobject.PooledStringBuffer; import com.my.pool.pooledobject.PooledStringBufferFactory; public class MainClass { public static void main(String[] args) { GenericObjectPoolConfig config = new GenericObjectPoolConfig(); //最长等待分配时间 config.setMaxWaitMillis(1000l); //池内最多对象数 config.setMaxTotal(100); //池内最大空闲数目 config.setMaxIdle(20); //池内最小空闲数目 config.setMinIdle(10); GenericObjectPool<StringBuffer> pool = new GenericObjectPool<StringBuffer>(new PooledStringBufferFactory(), config); PooledStringBuffer bufUtil = new PooledStringBuffer(pool); bufUtil.print("OK"); } }
对象池可以应用于数据库连接池的管理,可以重复利用对象,提高性能。实际应用中使用spring进行配置管理会更方便
相关推荐
Apache Commons Pool 是一个Java对象池库,主要用于提供各种对象池化的实现,以便高效地管理和复用有限的资源。标题中的"commo-pool, commons-pool commons-pool commons-pool"可能是由于输入错误,正确的应该是...
Apache Commons Pool则是Apache Commons项目下的另一个组件,专注于对象池的实现。`commons-pool-1.5.6.jar` 提供了一套通用的对象池服务,DBCP利用它来管理数据库连接对象。对象池技术可以有效地复用对象,减少创建...
Apache Commons Pool 是一个Java对象池库,主要用于提供各种对象池实现,以便在多个请求之间复用对象,从而提高性能和减少资源消耗。标题中的"commons-pool-1.6.jar.zip"表明这是一个包含Apache Commons Pool 1.6...
4. **通用对象池API**:Apache Commons Pool提供了一套通用的API,包括`GenericObjectPool`,用于管理和维护各种类型对象的池。 **Apache Commons Collections**: Apache Commons Collections是另一个Apache项目,...
Apache Commons Pool2是一个Java对象池库,用于管理可重用对象。对象池是软件设计中的一个概念,它允许程序在需要时重复使用已创建的对象,而不是每次需要时都创建新的对象。这在处理资源密集型对象(如数据库连接或...
Jedis是Java编程语言中广泛使用的Redis客户端,而Apache Commons Pool2则是一个对象池实现,用于有效地管理资源,如数据库连接或在本例中,Jedis实例。 **Jedis 3.2.0** 是一个重要的Redis客户端,提供了与Redis...
Apache Commons Pool2是一个Java对象池库,用于管理资源的复用,特别是数据库连接池。在IT行业中,数据源管理是优化系统性能的关键部分,而Apache Commons Pool2则是实现这一目标的重要工具。本篇将深入探讨这个库的...
Apache Commons Pool 是一个通用的对象池服务,它是DBCP的基础,负责对象的创建、维护和复用。Pool 1.6 提供了基本的池化服务,可以为任何可池化的对象(如数据库连接)创建池。其核心功能包括: 1. 对象池的创建和...
Apache Commons Pool 2是一个通用的对象池服务,它是Apache Commons组件的一部分。在Jedis中,它被用来实现对象池化,特别是Redis连接的池化。连接池允许应用程序重复使用已经创建的Redis连接,而不是每次需要时都...
3. `commons-pool-1.6.jar`:Apache Commons Pool是通用的对象池服务,它是DBCP连接池依赖的基础。DBCP利用了Pool库来实现对象(这里是数据库连接)的池化管理,包括创建、分配、回收和销毁连接等操作。 使用DBCP...
`commons-pool2-2.4.2.jar`是Apache Commons Pool 2的实现,这是一个对象池设计模式的库。对象池是用于管理资源,如数据库连接或线程,以提高性能和效率的机制。在Java中,当频繁创建和销毁对象时,这可能导致大量的...
Apache Commons Pool是对象池设计模式的实现,它提供了一种在多个应用之间共享昂贵资源的机制,比如数据库连接。对象池允许开发者创建一个对象池,而不是每次需要时都创建新对象,从而节省了内存和提高了性能。在...
在与Jedis结合使用时,我们可以配置一个JedisPool实例,设置合适的池参数,比如最大连接数、最小空闲连接数等,以满足应用的并发需求。 在实际应用中,为了使用这两个库,首先需要将它们添加到项目依赖中。对于...
Jedis是Java的一个开源客户端,专门用于操作Redis,而Commons Pool则是一个通用的对象池服务,为其他库(如Jedis)提供对象复用的能力,以提高性能和资源管理。 **Jedis详解:** Jedis是Redis官方推荐的Java客户端...
Apache Commons Pool 是一个Java对象池库,主要用于管理可重用对象。标题中的"commons-pool-1.5.6"指的是这个库的1.5.6版本。在Java开发中,对象池是一种优化资源管理的技术,它允许程序预先创建一组对象,当需要...
`commons-pool.jar`是Apache Commons Pool项目的一部分,它提供了一个通用的对象池服务。对象池设计用于管理和重用昂贵资源,如数据库连接或网络套接字。在Jedis中,Apache Commons Pool被用来管理Redis连接,通过...
`commons-pool-1.3.jar` 是Apache Commons项目中的对象池库,它为各种可池化对象提供了一种通用的框架。在DBCP中,它被用来管理数据库连接,确保多个线程可以共享有限的数据库连接资源,从而提高应用程序的效率。 ...
首先,Apache Commons Pool 是一个通用的对象池实现,它提供了一个框架,用于管理和复用对象,以提高性能和减少资源消耗。对象池的概念是创建一组预先初始化的对象,当需要时可以从池中获取,而不是每次需要时都创建...
Apache Commons Pool 提供了两种主要的对象池实现:GenericObjectPool 和 GenericKeyedObjectPool。它们都是基于策略的池化框架,允许用户自定义池的行为,例如最大池大小、空闲超时、测试对象是否有效等。这些策略...
Apache Commons Pool 2.3 是一个Java对象池库,它提供了通用的对象池服务。对象池是一种设计模式,用于高效管理资源,尤其是那些创建和销毁成本较高的对象。通过复用已经创建的对象,对象池可以减少系统开销,提高...