1. 程式人生 > >jdbc----自定義連線池

jdbc----自定義連線池

package cn.itcast.b_pool;


import java.sql.Connection;
import java.sql.DriverManager;
import java.util.LinkedList;


/**
 * 自定義連線池,管理連線
 * 自定義連線池步驟:
 * (1):建立連線池:MyPool.java
 * (2)指定全域性引數:初始化連線數,最大連線數,當前連線數,連線池集合
 * (3)建構函式:迴圈建立3個連線
 * (4)寫一個建立連線的方法
 * (5)獲取連線
 * ------->判斷:num<=3:池中有連線,直接拿。
 * ---------->num>3:  判斷是否達到最大連線
 * -------------------> <max :建立新的連線
 * ------------------->      :返回異常
 * (6)釋放連線(判斷,連續放回集合中)
 *
 */
public class MyPool {
private int init_count=3;//初始化連線數目
private int max_count=6;//最大連線數
private int current_count=0;//當前連線數
//連線池(存放所有的初始化連線)
private LinkedList<Connection> pool=new LinkedList<Connection>();
/**
* 1.建構函式:迴圈建立三個連結
*/
public MyPool() {
//初始化連線
for(int i=0;i<init_count;i++){
pool.add(this.createConnection());
current_count++;
}

}
/**
* 2.建立一個新的連線方法
* @return
*/
private Connection createConnection(){
try {
Class.forName("com.mysql.jdbc.Driver");
return DriverManager.getConnection("jdbc:mysql://localhost:3306/jdbc_demo","root","root");
} catch (Exception e) {
// TODO Auto-generated catch block
throw new RuntimeException(e);
}

}
/**
* 3.獲取連線
*/
public Connection getConnection(){
//1.判斷連線池中是否有連線,如果有,就取出
if(pool.size()>0){
return pool.removeFirst();

}
//2連線池中,沒有連線,判斷,如果沒有達到最大值,就建立連線,
else if(current_count<=max_count){
current_count++;
return this.createConnection();
}
//3.判斷如果達到最大值,返回異常
else{
throw new RuntimeException("當前連線已經達到最大連線~~~");
}
}
/**
* 4.釋放連線
*/
public 
}