/**布尔数组用于判断连接是否使用*/
private boolean inUse[];
/**初始化时为10个连接*/
private int poolSize = 10;
private ArrayList connections;
public ConnectionPool() {
connections = new ArrayList();
inUse = new boolean[poolSize];
try {
setupConnectionPool();
} catch (SQLException e) {
System.out.println("初始化连接池错误" + e.getMessage());
}
}
/**初始化连接*/
public void setupConnectionPool() throws SQLException {
for (int i = 0; i < poolSize; i++) {
Connection conn = ConnectionFactory.getConnection();
connections.add(conn);
inUse[i] = false;
}
}
/**从连接池里取出一连接*/
public Connection getConnection() {
Connection conn = null;
for (int i = 0; i < connections.size(); i++) {
if (inUse[i] == false) {
conn = (Connection) connections.get(i);
inUse[i] = true;
break;
}
}
return conn;
}
/**把一个连接释放到连接池中*/
public void freeConnection(int index) {
inUse[index] = false;
}
public static void main(String[] args) {
Connection c[] = new Connection[10];
ConnectionPool pool = new ConnectionPool();
for (int i = 0; i < 10; i++) {
c[i] = pool.getConnection();
}
for (int i = 0; i < c.length; i++) {
System.out.println("连接:" + c[i]);
}
}