JDBC连接池

JDBC连接池

思想:

首先我们来看下面这张图

JDBC连接池

1、池子中,我们有5个连接
2、我们有6个用户
3、当我们用户需要的时候呢,就把连接给用户,此时图就成这样了

JDBC连接池

1、如图所示,一个用户用一个连接
2、多的用户来就没有连接可以用,那么我们有什么好的处理方式呢
	(1)、等其他用户用完,我再用
	(2)、或者重新创建一个连接给连接池,连接池再分配给我们的用户(如图)

JDBC连接池

1、当用户用完之后,会把连接还给连接池,并不关闭(如图)

JDBC连接池

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();
    }

}

JDBC连接池

上一篇:mysql覆盖索引与回表


下一篇:mysql 取出每天发文章最多的2个用户