JDBC连接池
JDBC连接池
思想:
首先我们来看下面这张图
1、池子中,我们有5个连接
2、我们有6个用户
3、当我们用户需要的时候呢,就把连接给用户,此时图就成这样了
1、如图所示,一个用户用一个连接
2、多的用户来就没有连接可以用,那么我们有什么好的处理方式呢
(1)、等其他用户用完,我再用
(2)、或者重新创建一个连接给连接池,连接池再分配给我们的用户(如图)
1、当用户用完之后,会把连接还给连接池,并不关闭(如图)
java代码的实现
package com.java.Untils;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.LinkedList;
public class Pool {
static LinkedList<Connection> list = new LinkedList<>();
static {
for (int i = 0;i<10;i++) {
JDBCUntils jd = new JDBCUntils();
Connection connection = jd.getConnection();
list.add(connection);
}
}
/**
* 从池子中获取数据
* @return 返回一个数据库连接对象
*/
public static Connection getConnect() {
if(list.isEmpty()) {
// 说明此时连接已经用完了,需要多开一个连接
JDBCUntils jd = new JDBCUntils();
list.addLast(jd.getConnection());
}
Connection connection = list.removeFirst();
return connection;
}
/**
* 将多余的返回连接池中
* @param connection 参数为一个数据库连接
*/
public static void addBack(Connection connection) {
if(list.size() >= 10) {
try {
connection.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
} else {
list.addLast(connection);
}
}
public static int getSize() {
return list.size();
}
}