Java中数据库连接池原理机制的详细讲解(2) private int checkedOut;//已被分配出去的连接数 private ArrayList freeConnections=new ArrayList();//容器,空闲池,根据//创建时间顺序存放已创建但尚未分配出去的连接 private int minConn;//连接池里连接的最小数量 private int maxConn;//连接池里允许存在的最大连接数 private String name;//为这个连接池取个名字,方便管理 private String password;//连接数据库时需要的密码 private String url;//所要创建连接的数据库的地址 private String user;//连接数据库时需要的用户名 public Timer timer;//定时器 public DBConnectionPool(String name,String URL,String user,String password,int maxConn)//公开的构造函数 public synchronized void freeConnection(Connection con) //使用完毕之后,把连接返还给空闲池 public synchronized Connection getConnection(long timeout)//得到一个连接,timeout是等待时间 public synchronized void release()//断开所有连接,释放占用的系统资源 private Connection newConnection()//新建一个数据库连接 public synchronized void TimerEvent() //定时器事件处理函数 } public class DBConnectionManager { static private DBConnectionManager instance;//连接池管理类的唯一实例 static private int clients;//客户数量 private ArrayList drivers=new ArrayList();//容器,存放数据库驱动程序 private HashMap pools = new HashMap();//以name/value的形式存取连接池对象的名字及连接池对象 static synchronized public DBConnectionManager getInstance()/**如果唯一的实例instance已经创建,直接返回这个实例;否则,调用私有构造函数,创建连接池管理类的唯一实例*/ private DBConnectionManager()//私有构造函数,在其中调用初始化函数init() public void freeConnection(String name,Connection con)//释放一个连接,name是一个连接池对象的名字 public Connection getConnection(String name)//从名字为name的连接池对象中得到一个连接 public Connection getConnection(String name,long time)