通过一个小小的demo带你认识Pool2

一、Java泛型

为岐山等地区用户提供了全套网页设计制作服务,及岐山网站建设行业解决方案。主营业务为网站设计制作、网站设计、岐山网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!

Apache Commons Pool2源码中用到了很多泛型的知识,这里我们回顾一下泛型,以便于我们更好的阅读后续的源码。

1. 什么是泛型?

简而言之,泛型可以在定义类,接口和方法时使类型(类和接口)成为参数。类似在方法声明中使用的形式参数。

2. Java泛型标记符

  • E - Element (在集合中使用,因为集合中存放的是元素)
  • T - Type(Java 类)
  • K - Key(键)
  • V - Value(值)
  • N - Number(数值类型)
  • ? - 表示不确定的Java类型
  • S、U、V - 2nd、3rd、4th types

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这种对象资源。

【本文为专栏作者“朱国立”的原创稿件,转载请通过作者微信公众号“开发者圆桌”获取联系和授权】

戳这里,看该作者更多好文

当前文章:通过一个小小的demo带你认识Pool2
链接分享:http://www.gawzjz.com/qtweb/news27/186877.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联