论坛首页 Java企业应用论坛

连接池实现原理及效率上后的一点疑问

浏览 10314 次
精华帖 (0) :: 良好帖 (1) :: 新手帖 (0) :: 隐藏帖 (10)
作者 正文
   发表时间:2011-08-02  
连接池得到的连接应该是个代理对象吧
0 请登录后投票
   发表时间:2011-08-02  
freish 写道
vector的锁啊,另外,也没哪个操作系统支持5000个线程吧?线程越多,就需要越多的调度时间,当线程数达到某个临界点时效率应该会急剧下降的


另外,你这个实现必须调用returnConn才能归还连接,如果直接调用了Connection的close呢?!


所以,一般连接池的实现都会继承Connection类,重写close方法,在close里将其归还给容器。获取连接的时候返回的也是这个继承的Connection类


受教了...
0 请登录后投票
   发表时间:2011-08-02  
LZ啊,有个问题哈:
DBConnPool类中第三行:
private  Vector<Connection> connpool=new Vector();   //存放连接
和init()方法第二行:
connpool=new Vector();
是否重复了?
0 请登录后投票
   发表时间:2011-08-02  
请教楼主,waitconn的作用是什么,根据你的设计,DBConnPool应该是单实例的,为什么需要反复将本身这个对象放在waitconn中?
0 请登录后投票
   发表时间:2011-08-03  
提几点建议
1.写这种“轮子”的时候,建议先看几个开源的代码
2.不专业的代码进行的测试给人的感觉是瞎测
3.你这个“池”最多只能算一个java的练习把,各方面都还有问题,离可拿来评估效率还远着呢~
0 请登录后投票
   发表时间:2011-08-03  
samttsch 写道
Vector本身就是同步的,size isEmtpy add get 都是同步的方法
自己又加了一些 你这个程序设计思想就不清楚
开始没想那么多,基础不够好,谢谢你,正在学习中
 
 
白糖_ 写道
LZ啊,有个问题哈:
DBConnPool类中第三行:
private Vector<Connection> connpool=new Vector(); //存放连接
和init()方法第二行:
connpool=new Vector();
是否重复了?

 的确是重复了,谢谢指点啊!

ahentent 写道
请教楼主,waitconn的作用是什么,根据你的设计,DBConnPool应该是单实例的,为什么需要反复将本身这个对象放在waitconn中?

 我只是想学习下,连接池的原理,所有写的比较简单,另,本人水平太差,没有考虑太多东西,waitconn使用来存放等待连接的线程,当有连接释放时,就让等待的线程继续执行

snake1987 写道
提几点建议
1.写这种“轮子”的时候,建议先看几个开源的代码
2.不专业的代码进行的测试给人的感觉是瞎测
3.你这个“池”最多只能算一个java的练习把,各方面都还有问题,离可拿来评估效率还远着呢~

 谢谢你的提议,我看的源码的确是太少了,第一次发帖在论坛,有些浮躁,我是觉得自己写的没什么问题,但从回帖中得到的信息,的确程序本身有很大问题,也正在学习中,本篇只是练习,并没有去使用

希望以后能多指点,共同学习

0 请登录后投票
   发表时间:2011-08-03  
建议看一下 apache commons-pool的源码
里面是对象池的实现,很通用
可以看看
0 请登录后投票
   发表时间:2011-08-03  
我个人觉得,应该学习他的精神,大家可以不使用他的框架。

值得鼓励!!加油!!

0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics