一、通过Java泛型 Apache Commons Pool2源码中用到了很多泛型的通过知识,这里我们回顾一下泛型,通过以便于我们更好的通过阅读后续的源码。 1. 什么是通过泛型? 简而言之,泛型可以在定义类,通过接口和方法时使类型(类和接口)成为参数。通过类似在方法声明中使用的通过形式参数。 2. Java泛型标记符 3. Object与这些标记符代表的通过Java类型有啥区别呢? Object是所有类的根类,任何类的通过对象都可以设置给该Object引用变量,使用的时候可能需要类型强制转换,但是用使用了泛型T、E等这些标识符后,在实际用之前类型就已经确定了,不需要再进行类型强制转换。站群服务器 4. 官方参考 可以肯定的说,上面介绍的知识,在论坛和博客中都可以搜索到,但是大家有没有想过,那些发布博客的人从哪里获取这些泛型的知识呢?书是一个渠道,更重要的是官方的文档参考,如果英文不错我强烈建议大家看官网的原版说明,从这些官方的技术文档中,你可以获得很多意想不到的知识。http://docs.oracle.com/javase/tutorial/java/generics/index.html这个地址是Oracle官网关于Java泛型的说明,建议大家有空阅读阅读。 二、初识Pool2 回顾了Java泛型,我们来认识一下Apache Commons Pool2吧,既然是先认识一下,与了解一个人是一样的,亿华云计算就是多接触,自然就会加深印象。对于代码我们怎么接触呢?那自然是demo了,一个小小的demo可以帮助我们了解,加深印象。我们来拆解一下Pool2的demo吧。 1. 准备demo环境 2. 从池中拿到StringBuffer,用完后放回池中 PS:一般情况下第14行代码,需要初始化一个buf=new StringBuffer(),而这里赋值为null,在第16行处直接从pool中获取StringBuffer,不再初始化,使用完毕后在第29行放回pool,这里把StringBuffer当成pool中的一种资源来使用,当然现实中使用StringBuffer直接初始化即可,不需要使用pool,可以展开想象,如果把StringBuffer换成jdbc连接,那不就是jdbc连接池了吗? 3. 定义StringBufferFactory,根据需要覆盖池中对象的生命周期方法 PS:PooledObjectFactory接口定义了池中对象的生命周期方法。 实现PoolableObjectFactory的最简单的方法是扩展BasePooledObjectFactory。StringBufferFactory是香港云服务器一个BasePooledObjectFactory实现,用来创建如上要用的StringBuffer对象。 4. 结合并测试 PS:我们传递StringBufferFactory给GenericObjectPool这个工厂来实例化我们的ReaderUtil。 从这个简单的demo可知,Pool2充当资源池,来管理StringBuffer这种对象资源。 【本文为专栏作者“朱国立”的原创稿件,转载请通过作者微信公众号“开发者圆桌”获取联系和授权】 戳这里,看该作者更多好文