锁定老帖子 主题:连接池实现原理及效率上后的一点疑问
精华帖 (0) :: 良好帖 (1) :: 新手帖 (0) :: 隐藏帖 (10)
|
|
---|---|
作者 | 正文 |
发表时间:2011-08-02
连接池得到的连接应该是个代理对象吧
|
|
返回顶楼 | |
发表时间:2011-08-02
freish 写道 vector的锁啊,另外,也没哪个操作系统支持5000个线程吧?线程越多,就需要越多的调度时间,当线程数达到某个临界点时效率应该会急剧下降的
另外,你这个实现必须调用returnConn才能归还连接,如果直接调用了Connection的close呢?! 所以,一般连接池的实现都会继承Connection类,重写close方法,在close里将其归还给容器。获取连接的时候返回的也是这个继承的Connection类 受教了... |
|
返回顶楼 | |
发表时间:2011-08-02
LZ啊,有个问题哈:
DBConnPool类中第三行: private Vector<Connection> connpool=new Vector(); //存放连接 和init()方法第二行: connpool=new Vector(); 是否重复了? |
|
返回顶楼 | |
发表时间:2011-08-02
请教楼主,waitconn的作用是什么,根据你的设计,DBConnPool应该是单实例的,为什么需要反复将本身这个对象放在waitconn中?
|
|
返回顶楼 | |
发表时间:2011-08-03
提几点建议
1.写这种“轮子”的时候,建议先看几个开源的代码 2.不专业的代码进行的测试给人的感觉是瞎测 3.你这个“池”最多只能算一个java的练习把,各方面都还有问题,离可拿来评估效率还远着呢~ |
|
返回顶楼 | |
发表时间: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的练习把,各方面都还有问题,离可拿来评估效率还远着呢~ 谢谢你的提议,我看的源码的确是太少了,第一次发帖在论坛,有些浮躁,我是觉得自己写的没什么问题,但从回帖中得到的信息,的确程序本身有很大问题,也正在学习中,本篇只是练习,并没有去使用 希望以后能多指点,共同学习 |
|
返回顶楼 | |
发表时间:2011-08-03
建议看一下 apache commons-pool的源码
里面是对象池的实现,很通用 可以看看 |
|
返回顶楼 | |
发表时间:2011-08-03
我个人觉得,应该学习他的精神,大家可以不使用他的框架。
值得鼓励!!加油!! |
|
返回顶楼 | |