连接池的实现

为什么要有连接池?

 1:维护多个连接。必须要保证每一个线程获取到的是不同的connection对象。

 2:提供一个方法可以回收连接。

以下是最基本的实现:

package com.zqh.utils;

import java.sql.Connection;

import java.sql.DriverManager;

import java.util.ArrayList;

import java.util.List;

public class ConnUtils{

//声明一个容器,放所有声明的连接Connection

private static List<Connection> pool = new ArrayList<Connection>();

static{

try{

Class.forName("com.mysql.jdbc.Driver");

String url = "jdbc:mysql:///dbtest?characterEncoding=UTf8";

for(int i=0;i<3;i++){

//创建三个连接

Connection con = DriverManager.getConnection(url,"root","1234");

//将这个三个连接放到pool中去

pool.add(con);

}

System.err.println("连接是:"+pool);

}catch(Exception e){

throw new RuntimeException(e.getMessage(),e);

}

}

public static Connection getCon(){

synchronized (pool) {

Connection con = pool.remove(0);

try {

Thread.sleep(100);

} catch (InterruptedException e) {

e.printStackTrace();

}

System.err.println("还有:"+pool.size());

return con;

}

}

//手工的还连接

public static void back(Connection con){

System.err.println("还连接:"+con);

pool.add(con);

}

}

而程序员,总是调用close方法,所以为了回收连接。我们应该重写close方法。对close方法增强。

posted @ 2013-10-22 22:02  ZQH005  阅读(141)  评论(0)    收藏  举报