您的位置:首页 > 编程语言 > Java开发

自己设计一个简单的的Java连接池(一)

2013-07-12 16:20 176 查看
      虽说我们现在可以用第三方提供的java连接池,比如c3p0,dbcp等,这些用得也比较广泛,然而当我们舍弃这些连接池时,运用一些模式,也是可以实现自己的连接池的。

     首先我们的清楚,设计连接池的目的,一是我们得保证多个连接,即保证每个线程都能取得不同的Connection。 二是得提供一个方法回收那些连接,使得处在等待状态的线程能够取得连接。以下是一个简单的连接池代码:

import java.sql.Connection;
import java.sql.DriverManager;
import java.util.ArrayList;
import java.util.List;
public class DbPool1 {
//声明一个容器,放所有声明的连接Connection
private static List<Connection> pool = new ArrayList<Connection>();
static{
try{
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql:///test?characterEncoding=UTf8";
for(int i=0;i<3;i++){
//创建三个连接
Connection con = DriverManager.getConnection(url,"root","root");
//将这个三个连接放到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);
}
}
注:此代码为王建老师上课所讲。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Java连接池
相关文章推荐