课程咨询 :186 8716 1620      qq:2066486918

昆明Java培训 > 达内新闻 > JedisPool的实现
  • JedisPool的实现

    发布:昆明Java培训      来源:达内新闻      时间:2016-08-31

  • 昆明Java培训机构的老师带大家看JedisPool的实现,由于JedisPool继承Pool<T>,所以我们主要看Pool<T>的部分代码:

    public abstract class Pool<T> implements Closeable {

    protected GenericObjectPool<T> internalPool;

    public Pool(final GenericObjectPoolConfig poolConfig, PooledObjectFactory<T> factory) {

    initPool(poolConfig, factory);

    }

    public boolean isClosed() {

    return this.internalPool.isClosed();

    }

    public void initPool(final GenericObjectPoolConfig poolConfig, PooledObjectFactory<T> factory) {

    if (this.internalPool != null) {

    try {

    closeInternalPool();

    } catch (Exception e) {

    }

    }

    this.internalPool = new GenericObjectPool<T>(factory, poolConfig);

    }

    public T getResource() {

    try {

    return internalPool.borrowObject();

    } catch (NoSuchElementException nse) {

    throw new JedisException("Could not get a resource from the pool", nse);

    } catch (Exception e) {

    throw new JedisConnectionException("Could not get a resource from the pool", e);

    }

    }

    protected void returnResourceObject(final T resource) {

    if (resource == null) {

    return;

    }

    try {

    internalPool.returnObject(resource);

    } catch (Exception e) {

    throw new JedisException("Could not return the resource to the pool", e);

    }

    }

    public void addObjects(int count) {

    try {

    for (int i = 0; i < count; i++) {

    this.internalPool.addObject();

    }

    } catch (Exception e) {

    throw new JedisException("Error trying to add idle objects", e);

    }

    }

    }

    JedisPool通过内部引用GenericObjectPool,包装其接口的装饰者模式,相比继承来说这种模式更加灵活。JedisPool的构造方法需要将JedisFactory以及JedisPoolConfig创建标准的ObjectPool作为自己的成员变量。所以pool.getResource()方法的背后还是调 PoolObject.borrowObject()。

    了解详情请登陆昆明达内Java培训官网(km.Java.tedu.cn)!

    推荐文章

上一篇:edisFactory的实现

下一篇:预初始化参数

最新开班日期  |  更多

Java--零基础全日制班

Java--零基础全日制班

开班日期:11/30

Java--零基础业余班

Java--零基础业余班

开班日期:11/30

Java--周末提升班

Java--周末提升班

开班日期:11/30

Java--零基础周末班

Java--零基础周末班

开班日期:11/30

  • 网址:http://km .java.tedu.cn      地址:昆明市官渡区春城路62号证券大厦附楼6楼
  • 课程培训电话:186 8716 1620      qq:2066486918    全国服务监督电话:400-827-0010
  • 服务邮箱 ts@tedu.cn
  • 2001-2016 达内国际公司(TARENA INTERNATIONAL,INC.) 版权所有 京ICP证08000853号-56