📄 pooledcon.java
字号:
package qianqian.pooledb;
import java.sql.Connection;
import qianqian.p2pchat.constant.Const;
public class PooledCon {
// 连接数组
private static final Connection[] pool = new Connection[Const.PoolSize];
// 标示连接状态数组
private static final byte[] isConUse = new byte[Const.PoolSize];
// 连接池单例对象
private static PooledCon poolCon = null;
// 初始化连接池
private PooledCon() throws java.sql.SQLException {
for (int i = 0; i < pool.length; i++) {
pool[i] = DBManager.getConnection();
isConUse[i] = 0;
}
}
// 实例化连接池
public static PooledCon getInstance() throws java.sql.SQLException {
if (poolCon == null) {
synchronized (PooledCon.class) {
if (poolCon == null)
poolCon = new PooledCon();
}
}
return poolCon;
}
// 从池中获取连接
public Connection getCon() throws java.sql.SQLException {
synchronized (poolCon) {
for (int i = 0; i < pool.length; i++) {
if (isConUse[i] == 0) {
if (pool[i].isClosed())
pool[i] = DBManager.getConnection();
isConUse[i] = 1;
return pool[i];
}
}
}
return DBManager.getConnection();
}
// 释放连接
public void releaseCon(Connection con) throws java.sql.SQLException {
for (int i = 0; i < pool.length; i++) {
if (con == pool[i]) {
isConUse[i] = 0;
return;
}
}
con.close();
}
// 关闭连接池
public void closePool() throws java.sql.SQLException {
if (poolCon == null)
return;
for (int i = 0; i < pool.length; i++) {
if (!pool[i].isClosed())
pool[i].close();
isConUse[i] = 1;
}
poolCon = null;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -