java objectpool_Java Pool

本词条缺少信息栏、概述图,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧!

Java Pool(Java 池)是为了减少资源创建、初始化的系统开销而采取的一种实现模式。

Java Pool模式类型

编辑

Java Pool连接池

我们需要使用Connection Pool的情况都通常都是指网络连接,比如:DB connection, Socket的Connection,这些对象往往需要使用Pool来管理,因为这些对象的重复创建需要较长的时间,是系统性能的瓶颈。

Connection Pool实现包括两类:第一种是受管的Connection Pool,需要实现JCA的Resource Adapter规范,通过JNDI lookup出来ConnectionPool对象,然后调用受管ConnectionPool对象的getConnection方法获得connection,第二种是自己实现一个Connection的Object Pool,通过自定义的ConnectionFactory类获得一个connection。

第一种:受管的Connection Pool

目前J2EE Container中常用的connection pool有:

DB Connection Pool

JMSConnection Pool

LDAPConnection Pool

JCA Connection Pool

DB Connection Pool即JDBC connection pool,基本上所有的J2EE容器都提供了实现,JMS connection pool一般的JMS Server都提供了实现,LDAP connection pool由LDAP Server提供实现, JCA connection pool需要自己实现resource adapter。

第二种:实现一个Connection的Object Pool

通常可以在已有第三方的Object Pool上实现自己的Connection Pool,如apache的commons pool,如果非要从头开始当然也是可以的。通常如果是要用规范的API获取connection,如jdbc,jms,举个例子:DriverManager.getConnection, Connection.close, 为了使这个Connection Pool可以方便地用在各种jdbc驱动上,而且为了使原来没有使用该Connection Pool的应用可以方便地切换到该Connection Pool上,我们可能需要用到AOP,这样DriverManager.getConnection就是从pool中取出connecton(如果pool中有的话),Connection.close就是return给pool,从逻辑上释放。用OO的方法也是可以实现的。

Java Pool线程池

应用程序可以有多个线程,这些线程在休眠状态中需要耗费大量时间来等待事件发生。其他线程可能进入睡眠状态,并且仅定期被唤醒以轮循更改或更新状态信息,然后再次进入休眠状态。为了简化对这些线程的管理,.NET框架为每个进程提供了一个线程池,一个线程池有若干个等待操作状态,当一个等待操作完成时,线程池中的辅助线程会执行回调函数。线程池中的线程由系统管理,程序员不需要费力于线程管理,可以集中精力处理应用程序任务。

线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务。线程池线程都是后台线程.每个线程都使用默认的堆栈大小,以默认的优先级运行,并处于多线程单元中.如果某个线程在托管代码中空闲(如正在等待某个事件),则线程池将插入另一个辅助线程来使所有处理器保持繁忙.如果所有线程池线程都始终保持繁忙,但队列中包含挂起的工作,则线程池将在一段时间后创建另一个辅助线程但线程的数目永远不会超过最大值.超过最大值的线程可以排队,但他们要等到其他线程完成后才启动。

Java Pool实现方式

编辑

实现一个资源池,一般要实现以下方法: 1、用Vector作为池中存储元素的容器。之所以使用Vector,而不是Map、List等,是基于Vector线程安全考虑;

2、实现池中元素的获取、释放功能;

3、实现池的finalize方法,保证系统在垃圾回收时正确回收目前处于idle状态的资源,保证正在被使用的资源不被系统回收。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值