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 简单数据库连接池
猜你喜欢
- swagger配置正式环境中不可访问的问题 2023-01-02
- mybatis中的if test判断入参的值问题 2022-12-03
- 一文了解自定义MVC框架实现 2023-02-28
- 永中文档在线转换服务Swagger调用说明 2022-12-12
- Java基础知识之StringReader流的使用 2023-08-07
- SpringBoot的依赖管理配置 2023-03-06
- springBoot如何动态加载资源文件 2023-08-11
- 一文带你你搞懂Java的3种IO模型 2023-07-15
- 使用JPA自定义VO接收返回结果集(unwrap) 2023-08-10
- SpringBoot详解整合MyBatis过程中可能遇到的问题 2023-02-11