本质
- 重写getConnection
从数据库连接池(池子链表)中获取连接,若池子中没有了,则重新创建连接(同时要判断已创建连接数是否大于预设的最大连接数)
- 重写释放资源
返回到数据库连接池中
- 池子中在用,池子中有的不是current,current是目前已经创建的连接数
接口
- 创建连接(create)
- 获取连接(get)//从连接池(池子链表)中获取conn对象
- 释放连接(free)//传回数据库连接池中
- 获取当前已创建连接数(getCurrent)
实现类
- 先静态代码块加载,注册驱动,初始化数据库连接池
- getFree:获取池子链表中的个数
- getCurrent:获取已经创建的连接数
优化
- 获取连接时判断是否有效,采用isValid(TIME_OUT),若无效则destroy之
- 设计最大创建连接数,getCurrent方法来获取,若已超出最大连接数则抛出异常
- 获取空闲连接数(getFreeConnection)
- 使用synchronized来防止线程冲突问题
版权声明:本文来源博客园,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://www.cnblogs.com/melojun/p/14576938.html
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
-
发表于 2021-04-07 20:28:59
- 阅读 ( 1289 )
- 分类:数据库