文档章节

对象池common-pool2源码分析

u
 udbwcso
发布于 2016/03/28 17:29
字数 416
阅读 272
收藏 6

Apache common-pool2提供了一个通用的对象池技术的实现。

common-pool2主要围绕三个接口来实现,ObjectPool、PooledObject、PooledObjectFactory。由PooledObjectFactory创建的对象,经PooledObject包装后放入ObjectPool。

1.ObjectPool对象池

ObjectPool:对象池,负责存放管理对象.

官方例子:http://commons.apache.org/proper/commons-pool/examples.html

ReaderUtil readerUtil = 
        new ReaderUtil(new GenericObjectPool<StringBuffer>(new StringBufferFactory()));

先从GenericObjectPool开始分析

成员变量:

重要的成员变量为:allObjects和idleObjects.

/*
 * All of the objects currently associated with this pool in any state. It
 * excludes objects that have been destroyed. The size of
 * {@link #allObjects} will always be less than or equal to {@link
 * #_maxActive}. Map keys are pooled objects, values are the PooledObject
 * wrappers used internally by the pool.
 */
private final Map<T, PooledObject<T>> allObjects =
        new ConcurrentHashMap<T, PooledObject<T>>();


private final LinkedBlockingDeque<PooledObject<T>> idleObjects;


allObjects:对象池中所有的对象.

idleObjects:空闲对象.

其中数据结构LinkedBlockingDeque:

结点的数据结构

/** Doubly-linked list node class */
private static final class Node<E> {
    /**
     * The item, or null if this node has been removed.
     */
    E item;

    /**
     * One of:
     * - the real predecessor Node
     * - this Node, meaning the predecessor is tail
     * - null, meaning there is no predecessor
     */
    Node<E> prev;

    /**
     * One of:
     * - the real successor Node
     * - this Node, meaning the successor is head
     * - null, meaning there is no successor
     */
    Node<E> next;

    /**
     * Create a new list node.
     *
     * @param x The list item
     * @param p Previous item
     * @param n Next item
     */
    Node(E x, Node<E> p, Node<E> n) {
        item = x;
        prev = p;
        next = n;
    }
}

2.PooledObject池对象

PooledObject:池对象,将需要放入对象池的对象包装添加一些附加信息.

从之前的分析中可以看出GenericObjectPool中allObjects和idleObjects存放均是池对象即经过包装的对象.

private final Map<T, PooledObject<T>> allObjects =
        new ConcurrentHashMap<T, PooledObject<T>>();
private final LinkedBlockingDeque<PooledObject<T>> idleObjects;

3.PooledObjectFactory池对象工厂

PooledObjectFactory:池对象工厂,负责池对象的创建,销毁等.

© 著作权归作者所有

共有 人打赏支持
u
粉丝 80
博文 66
码字总数 15709
作品 0
武汉
对象池common-pool2策略分析

上一篇:对象池common-pool2分析 common-pool2策略 上一篇对象池common-pool2分析从三个主要的接口进行分析,这一篇将对源码进行详细的分析,力图找出对象池的管理策略.从之前的分析可以看出Obj...

udbwcso
2016/04/11
165
0
Apache Common-pool2对象池浅析

Apache Common-pool2包提供了一个通用的对象池技术的实现。可以很方便的基于它来实现自己的对象池,比如DBCP和Jedis他们的内部对象池的实现就是依赖于Common-pool2。 对象的创建和销毁在一定...

同明
2016/06/14
210
0
对象池common-pool2源码分析之对象状态

对象池common-pool2源码分析 对象池common-pool2策略分析 从前两篇的分析中可以看出对象池中的对象会被激活,钝化,销毁等,那么做这些操作的对象需要满足什么条件呢,与这些操作之后相对应的对象...

udbwcso
2016/04/14
419
0
Thrift RPC实战(四) common-pool2连接池

我们在服务器开发的过程中,往往会有一些对象,它的创建和初始化需要的时间比较长,比如数据库连接,网络IO,大数据对象等。在大量使用这些对象时,如果不采用一些技术优化,就会造成一些不可...

lemonLove
06/21
0
0
GenericObjectPool参数解析

序 本文主要解析一下apache common pools下的GenericObjectPool的参数设置 GenericObjectPool commons-pool2-2.4.2-sources.jar!/org/apache/commons/pool2/impl/GenericObjectPool.java 默认......

go4it
2017/10/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

python生成HTML报告

# -*- coding=utf-8 -*-# author=zyqimport timeclass Template(object): '''html报告''' HTML_TEMP=''' <!DOCTYPE html> <html lang="en"> <head......

小白兔_球球
4分钟前
0
0
模型融合资料汇总

https://blog.csdn.net/u012526003/article/details/79109418https://blog.csdn.net/willduan1/article/details/73618677https://blog.csdn.net/wstcjf/article/details/77989963?utm_so......

KYO4321
6分钟前
0
0
热更步骤

根据官方文档: http://docs.cocos.com/creator/manual/zh/advanced-topics/hot-update.html version_generator.js文件放到项目根目录下 注意步骤的顺序: 1.构建 2.根据构建目录运行下面命令...

Valiancer
6分钟前
0
0
小程序重写CheckBox样式

CheckBox /* 重写 checkbox 样式 *//* 未选中的 背景样式 */checkbox .wx-checkbox-input{ border-radius: 50%; width: 40rpx; height: 40rpx;}/* 选中后的 背景样式...

originDu
10分钟前
0
0
mysql自动安装脚本

[root@localhost_04 ~]# cat mysql.sh #!/bin/bash# "################检查本机安装mysql的基本条件########################"echo "Checking  user :"d=`id -u`if [ $d ......

芬野de博客
24分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部