自定义实现了一个简单的连接池
已实现功能:
- 通过给定的初始大小,初始化固定数量的连接池。
- 通过maxsize指定最大连接池大小,当初始连接数不够用时,自动扩容,但不超过maxsize。
- 扩容之后若连接占用减少,连接池自动恢复到初始大小
(想到但)未实现功能:
- 线程不安全
- 获取连接失败无等待时间,直接给出异常。
- 如果线程池初始大小连接被长期占用,那么该线程池将毫无卵用。
package jdbc;
import java.lang.reflect.Proxy;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.LinkedList;
public class MyDataSource {
private LinkedList<Connection> pool = new LinkedList<>(); // 存储连接的容器
private int initSize; // 初始连接池大小
private int maxSize; // 最大连接池大小
private int correctSize = 0; // 当前连接池大小,不是当前连接数量。
// 初始化
public MyDataSource(int initSize, int maxSize) {
this.initSize = initSize;
this.