手写数据库链接池

本质

  1. 重写getConnection

从数据库链接池(池子链表)中获取链接,若池子中没有了,则从新建立链接(同时要判断已建立链接数是否大于预设的最大链接数)数据库

  1. 重写释放资源

返回到数据库链接池中优化

  1. 池子中在用,池子中有的不是current,current是目前已经建立的链接数

接口

  1. 建立链接(create)
  2. 获取链接(get)//从链接池(池子链表)中获取conn对象
  3. 释放链接(free)//传回数据库链接池中
  4. 获取当前已建立链接数(getCurrent)

实现类

  1. 先静态代码块加载,注册驱动,初始化数据库链接池
  2. getFree:获取池子链表中的个数
  3. getCurrent:获取已经建立的链接数

优化

  1. 获取链接时判断是否有效,采用isValid(TIME_OUT),若无效则destroy之
  2. 设计最大建立链接数,getCurrent方法来获取,若已超出最大链接数则抛出异常
  3. 获取空闲链接数(getFreeConnection)
  4. 使用synchronized来防止线程冲突问题
相关文章
相关标签/搜索