`

java 连接池

阅读更多
5、连接池的实现
为什么要有连接池
 1:维护多个连接。必须要保证每一个线程获取到的是不同的connection对象。
 2:提供一个方法可以回收连接。
以下是最基本的实现:
package cn.itcast.utils;
import java.sql.Connection;
import java.sql.DriverManager;
import java.util.ArrayList;
import java.util.List;
public class ConnUtils2 {
//声明一个容器,放所有声明的连接Connection
private static List<Connection> pool = new ArrayList<Connection>();
static{
try{
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql:///db909?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方法增强。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics