大佬教程收集整理的这篇文章主要介绍了简易版JDBC连接池,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
public class DbUtil {
private static final String DRIVER = "com.mysql.cj.jdbc.Driver";
private static final String URL = "jdbc:mysql://127.0.0.1:3306/school?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=UTC";
private static final String USER = "root";
private static final String PWD = "123456";
public static Connection getConnection(){
try {
Class.forName(DRIVER);
Connection conn = (Connection) DriveRMANager.getConnection(URL,USER,PWD);
System.out.println("generate a new connection:"+conn.hashCode());
return conn;
} catch (Exception E) {
e.printStackTrace();
return null;
}
}
}
public class DBPool {
private static final int max = 20;
private static final int min = 5;
private static int poolSize = 0;
private DBPool(){}
private static ConcurrentLinkedQueue<Connection> pool = new ConcurrentLinkedQueue<Connection>();
static {
if (poolSize == 0 && pool.isEmpty()){
synchronized (DBPool.class){
if (poolSize == 0 && pool.isEmpty()){
try {
System.out.println("连接池为空,正在初始化");
for (int i = 0; i < min; i++) {
pool.add(DbUtil.getConnection());
poolSize++;
}
}catch (Exception E){
e.printStackTrace();
}
}
}
}
}
public static Connection getConnection(){
try {
if (!pool.isEmpty()){
System.out.println("获得连接");
return pool.remove();
}else {
System.out.println("正在扩大连接池");
dilatation(5);
System.out.println("正在获得连接");
while (true){
if (!pool.isEmpty()){
System.out.println("获得连接");
return pool.remove();
}
}
}
}catch (Exception E){
e.printStackTrace();
return null;
}
}
public static void dilatation(int num){
if (poolSize > maX){
System.out.println("超过连接池最大数量");
return;
}
for (int i = 0; i < num; i++) {
pool.add(DbUtil.getConnection());
poolSize++;
}
}
public static void close(Connection conn){
pool.add(conn);
System.out.println("回收成功");
}
}
public class JDBCTest {
public static void main(String[] args) {
Connection c1 = DBPool.getConnection();
DBPool.close(c1);
System.out.println("该连接为:"+c1.hashCode());
for (int i = 0; i < 20; i++) {
System.out.println("连接"+i+" :"+DBPool.getConnection());
}
}
}
以上是大佬教程为你收集整理的简易版JDBC连接池全部内容,希望文章能够帮你解决简易版JDBC连接池所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。