Java并发编程原理与实战二十四:简易数据库连接池
public class MyDataSource { private static LinkedList<Connection> pool = new LinkedList<>(); private static final int INIT_CONNECTIONS = 10; private static final String DRIVER_NAME = "com.mysql.jdbc.Driver"; private static final String URL = ""; private static final String USER = ""; private static final String PASSWORD = ""; static { try { Class.forName(DRIVER_NAME); for (int i = 0; i < INIT_CONNECTIONS; i++) { Connection connection = DriverManager.getConnection(URL, USER, PASSWORD); pool.addLast(connection); } } catch (Exception e) { e.printStackTrace(); } } public Connection getConnection() { synchronized (pool) { while (pool.size() <= 0) { try { wait(); } catch (InterruptedException e) { e.printStackTrace(); } } if (!pool.isEmpty()) { return pool.removeFirst(); } } return null; } public void releaseConnection(Connection connection) { if (connection != null) { synchronized (pool) { pool.addLast(connection); notifyAll(); } } } }
参考资料:
《java并发编程实战》龙果学院
分类:
JUC
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
2012-08-11 线性表之--顺序表
2012-08-11 线性表之--链表操作