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 简单数据库连接池


基础教程推荐
猜你喜欢
- mybatis plus乐观锁及实现详解 2022-11-19
- Java实现ATM机操作系统 2022-11-19
- Intellij IDEA如何修改配置文件位置 2023-04-17
- Java中ByteArrayInputStream和ByteArrayOutputStream用法详解 2023-01-09
- 使用工具类-java精确到小数点后6位 2023-06-24
- SpringMVC基于配置的异常处理器 2022-11-23
- jsp倒计时简单实现方法 2023-08-03
- Java NIO与IO的区别以及比较 2023-05-19
- 使用JPA自定义VO接收返回结果集(unwrap) 2023-08-10
- SpringCloud集成Hystrix熔断过程分步分解 2023-06-01