public class DataSourcePool {private final CopyOnWriteArrayListConnection list;//用到了信号量private final Semaphore semaphore;public DataSourcePool(int size) throws SQLException {list = new CopyOnW...
public class DataSourcePool {
private final CopyOnWriteArrayList<Connection> list;
//用到了信号量
private final Semaphore semaphore;
public DataSourcePool(int size) throws SQLException {
list = new CopyOnWriteArrayList<>();
semaphore = new Semaphore(size);
for (int i=0;i<size;i++){
Connection connection = DriverManager.getConnection("url");
list.add(connection);
}
}
//使用同步方法获取
public synchronized Connection getConnection() throws InterruptedException {
//先将当前信号量-1,如果为0,将阻塞
semaphore.acquire();
return list.remove(0);
}
public synchronized void close(Connection connection){
//信号量+1
semaphore.release();
list.add(connection);
}
编程基础网
本文标题为:java 简单数据库连接池
基础教程推荐
猜你喜欢
- 一文详解Spring加载properties文件的方式 2022-12-27
- JavaSE实现电影院系统 2023-04-11
- SpringBoot 中使用RabbtiMq 详解 2023-03-21
- 使用maven shade插件解决项目版本冲突详解 2023-05-07
- spring boot集成smart-doc自动生成接口文档详解 2023-05-24
- Java异常体系非正常停止和分类 2023-01-02
- spring中IOC控制反转依赖注入和new对象的区别说明 2022-11-03
- Java多线程案例之单例模式懒汉+饿汉+枚举 2022-12-02
- JAVA学习进阶篇之时间与日期相关类 2023-05-08
- Java线程的五种状态介绍 2023-04-22
