在java中,有很多池管理的概念,典型的如线程池,数据库连接池,查看源码会发现这些池管理类都是继承于GenericObjectPool<T>,所以了解GenericObjectPool的工作机制,对进一步理解java中常用的池很有帮助,这样当我们使用这些池管理类时能做到心中有数,另外当我们需要用自定义的池管理类管理我们一些特殊的对象时,也能实现。
了解GenericObjectPool<T>,应该从其构造方法入手
GenericObjectPool<T>(PooledObjectFactory<T>factory, GenericObjectPoolConfig config)
创建一个对象池,需要传入两个参数PooledObjectFactory<T> factory和GenericObjectPoolConfigconfig,其中config是池管理类的一些参数配置,比如最小对象数量,最大对象数量,超时时间等,由于它有默认值,所以只需对关键的参数进行设置即可,比如最大对象管理数量。
下面以自创建的Jedis管理池为例:
JedisFactory.java
public class JedisFactory extendsBasePooledObjectFactory<Jedis>{
publicPooledObject<Jedis> makeObject(){
Jedisjedis = new Jedis("127.0.0.1",6379);
jedis.connect();