java资源池的实现

更新时间:2023-05-15 17:29:59 阅读: 评论:0

java资源池的实现
1、资源池托福
对于共享资源,有⼀个很著名的设计模式:资源池。该模式正是为了解决资源频繁分配、释放所造成的问题的。把该模式应⽤到数据库连接管理领域,就是建⽴⼀个数据库连接池,提供⼀套⾼效的连接分配、使⽤策略,最终⽬标是实现连接的⾼效、安全的复⽤。还有⼀类对象池⼤家可能不太了解,对于nio中有个堆外内存,netty的ByteBuf对象的实现就是⼀个可复⽤的对象池来提⾼性能。连接池⼤家平时听的多,使⽤也多,但是⾃⼰实现应该⽐较少。
1.1 LinkedBlockingQueue应⽤实例
并发库中的BlockingQueue是⼀个⽐较好玩的类,顾名思义,就是阻塞队列。该类主要提供了两个⽅法put()和take(),前者将⼀个对象放到队列中,如果队列已经满了,就等待直到有空闲节点;后者从head取⼀个对象,如果没有对象,就等待直到有可取的对象。
哈利波特电子书
⼀个简单的资源池可以使⽤LinkedBlockingQueue实现,需要的对象如下:strict怎么读
ICommonPool : 定义通⽤池,借出对象和归还对象
this is the endPoolFactory :对象⼯⼚,负责创建和销毁对象
koji>红宝书考研英语词汇怎么样PoolConfig : 对象池的配置(最⼤连接数和最⼩连接数)
BaCommonPool :对象池的主要基础实现
1.2 commons-pool2实现资源池
PooledObject(池化对象) PooledObjectFactory(对象⼯⼚) ObjectPool (对象池)
<dependency>
<groupId>s</groupId>
<artifactId>commons-pool2</artifactId>
<version>2.6.2</version>
</dependency>
使⽤
medical equipment@Autowired
private TestObjectPool testObjectPool;
public void test(){
TestObject testObject =null;
try{
all in什么意思中文>薄乐
testObject = testObjectPool.borrowObject();
//省略业务代码...
}catch(Exception e){
e.printStackTrace();
}finally{
if(testObject !=null){
//最终归还对象到对象池
}
四级报名网站}
}
注意:使⽤对象要,需要returnObject,为了⽅便管理,可以参考数据库连接池的rvice层的设计,当rvice抛出异常时,捕获异常,释放对象。
参考:

本文发布于:2023-05-15 17:29:59,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/90/109601.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:对象   实现   资源
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图