首页 > 数据库技术 > 详细

JDBC连接池

时间:2021-03-28 17:45:09      阅读:20      评论:0      收藏:0      [点我收藏+]

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

}

JDBC连接池

原文:https://www.cnblogs.com/huangwenchao0821/p/14589042.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!