连接池原理

2019-06-12  本文已影响0人  传葱

什么是连接池

为什么使用连接池?

  • 每次请求到来需要建立连接,完成之后销毁连接,连接的创建和销毁带来很大的资源消耗,所有类似线程池,需要一个存储结构放置空闲的连接,以备下次连接来使用

连接池的实现

使用DruidDataSource,该类中变量分分为三种:记录状态的, 比如连接数量connectCount,关闭数量closeCount等;存储相关DruidConnectionHolder[] connection 这个数组中保存建立的连接对象,还记录活跃数量activeCount,废弃数量discardCount等,第三个记录线程DestroyTask destroyTask; CreateConnectionThread createConnectionThread; 这些大体上可以看出连接池中对象类型和大致功能

连接池核心功能

image.png
DruidConnectionHolder[] connections;

createConnection()
getConnection()
recycle()
  • 根据需要决定是否创建新的Connection,如果需要调用createConnection(),把创建好的connection对象保存到DruidConnectionHolder[] 中, 然后等待的线程使用创建好的连接getConnection(), 使用完之后connection对象不会被销毁,而是回收到数组中:recycle()方法


    image.png
  • 这个锁控制同一时间只有一个线程访问线程池,对线程池相关的数据进行修改
上一篇下一篇

猜你喜欢

热点阅读