java简易jdbc连接池核心是预创建、复用与归还:启动时按initialsize创建connection存入线程安全队列,获取时poll取用,归还时放回而非真实close;需包装pooledconnection重写close(),并校验isvalid或select 1确保有效性,配置maxactive和maxwait,关闭时遍历真实关闭。

Java 中用 JDBC 实现简易连接池,核心是“预创建 + 复用 + 归还”——不每次 new Connection,而是启动时建好一批,用完不 close 真实连接,而是放回队列等待下次取用。
手动管理连接对象池
用一个线程安全的集合(如 ConcurrentLinkedQueue 或 BlockingQueue)存空闲 Connection 对象。初始化时按配置数量循环调用 DriverManager.getConnection() 创建连接,并放入队列。
- 获取连接:从队列中
poll()取一个;若为空且未超最大数,可新建一个临时连接(需加锁控制) - 归还连接:调用自定义
close()方法,实际是把 Connection 放回队列,不是调用原生connection.close() - 需重写 Connection 包装类(如 PooledConnection),覆盖
close()行为,避免真实关闭
关键配置参数要硬编码或读取 properties
简易版至少支持三个参数:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- initialSize:启动时预创建连接数
- maxActive:池中最多允许多少个活跃连接(含正在使用的)
- maxWait:当无空闲连接时,线程最多等待毫秒数,超时抛异常
这些值可写死,也可从外部文件加载,便于调试和切换环境。
注意连接状态与异常处理
真实连接可能因网络中断、数据库宕机而失效。简易池可做基础校验:
- 归还前调用
connection.isValid(2)判断是否仍可用,不可用则丢弃不归还 - 获取连接后,首次执行 SQL 前建议先做一次简单查询(如
SELECT 1),失败则尝试重取或重建 - 所有 getConnection() 和归还逻辑必须捕获 SQLException,防止异常导致连接泄露
不依赖第三方库,但得自己管生命周期
没有 HikariCP 或 Druid 的自动监控、泄漏检测、连接填充等能力,所以:
- 应用关闭时,要遍历队列逐个调用真实
close() - 避免静态单例滥用,否则多数据源场景会冲突
- 连接不能跨线程长期持有,用完立即归还,否则池会饿死
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










