java简单模拟实现数据库连接池

本文介绍了数据库连接池的基本原理和作用,如资源重用、系统响应速度提升和统一的连接管理。通过模拟实现,阐述了配置参数、初始化连接池、连接的获取与释放等关键步骤,帮助理解数据库连接池的工作机制。
摘要由CSDN通过智能技术生成

为什么要使用数据库连接池

这个问题在一开始学习线程池或者整合ssm框架的时候经常会问自己这个问题,只知道这样使用可以在一定程度上优化程序的性能,提升系统的资源利用率,至于为什么这样使用一直没有搞明白。

从原理上讲,池化是一种思想,设想把所有的资源集中在一个池子里,那样对于使用资源的人来说就很容易也很方便的取用了,而且池化另外一个好处就是一开始就把资源价加载好,而不是需要的时候再去创建,对于调用者来说,就可以减少创建资源连接的时间,设想如果没有池化的技术,当大量的连接请求蜂拥而来,服务器需要开辟大量的线程资源来创建连接,这样服务器总有扛不住的时候。

对于池化技术,我们最熟悉的就是数据库的连接池配置了,比如我们熟知的参数,像初始化连接数,最小空闲连接,最大连接数等,想必大家在平时工作中都有涉及,比如下图中的redis参数连接设置就是一个说明,

在这里插入图片描述
数据库连接配置,
在这里插入图片描述

基本原理

在内部对象池中,维护一定数量的数据库连接,并对外暴露数据库连接的获取和返回方法。

如外部使用者可通过getConnection方法获取数据库连接,使用完毕后再通过releaseConnection方法将连接返回,注意此时的连接并没有关闭,而是由连接池管理器回收,并为下一次使用做好准备。

线程池作用

1、资源重用
由于数据库连接得到重用,避免了频繁创建、释放连接引起的大量性能开销。在减少系统消耗的基础上,增进了系统环境的平稳性(减少内存碎片以级数据库临时进程、线程的数量)

2、更快的系统响应速度
数据库连接池在初始化过程中,往往已经创建了若干数据库连接置于池内备用。此时连接池的初始化操作均已完成。对于业务请求处理而言,直接利用现有可用连接,避免了数据库连接初始化和释放过程的时间开销,从而缩减了系统整体响应时间。

3、新的资源分配手段
对于多应用共享同一数据库的系统而言,可在应用层通过数据库连接的配置,实现数据库连接技术。

4、统一的连接管理,避免数据库连接泄露
在较为完备的数据库连接池实现中,可根据预先的连接占用超时设定,强制收回被占用的连接,从而避免了常规数据库连接操作中可能出现的资源泄露

了解了上述基本原理之后,接下来说说具体的实现思路,

1、配置数据库连接池相关参数,比如数据库的连接信息,最小连接数、最大连接数等;
2、初始化配置信息,创建一定数量的连接资源,并放置在一个连接池,这里使用线程安全的集合来存放;
3、连接池分为两种,活跃连接池,空闲连接池,正常情况下,新来的一个连接请求,如果活跃连接池存在连接资源&

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小码农叔叔

谢谢鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值