废话不多说,直接上代码。
public class ConnectionUtil {
private static final Logger logger = LoggerFactory.getLogger(ConnectionUtil.class);
private static final List<Connection> pool = new ArrayList<>();
private static final int POOL_COUNT = 5;
private static String url = null;
private static String userName = null ;
private static String passWord = null ;
private ConnectionUtil(){}
/**
* 初始化连接数大小
*/
static{
try {
url = "连接串";
userName = "用户名";
passWord = "密码";
Class.forName("net.sf.log4jdbc.DriverSpy");
Connection conn = null;
for (int i = 0; i < POOL_COUNT; i++) {
conn = DriverManager.getConnection(url,userName ,passWord);
pool.add(conn);
}
} catch (Exception e) {
logger.error("初始化连接失败",e);
}
}
/**
* 添加一个连接到池子中,应该考虑最大上限
* @param conn
*/
private static void add(Connection conn){
if(conn != null){
pool.add(conn);
}
}
/**
* 移除一个连接
* @param conn
*/
private static void remove(Connection conn){
pool.remove(conn);
}
/**
* 获取一个连接,当连接池中的不够用时,新建一个
*/
public static Connection get() throws ClassNotFoundException, SQLException{
Connection conn = null;
if(!pool.isEmpty()){
conn = pool.get(0);
remove(conn);
}else{
conn = getConnection();
add(conn);
}
return conn;
}
/**
* 使用完毕之后,再放回池子中
* @return
*/
public static void backConn(Connection conn){
add(conn);
}
/**
* 新建一个连接
* @return
*/
private static Connection getConnection() throws ClassNotFoundException, SQLException{
Class.forName("net.sf.log4jdbc.DriverSpy");
return DriverManager.getConnection(url,userName ,passWord);
}