自定义连接池(方法增强)

自定义连接池(方法增强)

需要
自定义连接池中存在严重问题,用户调用getConnection()获得连接后,必须使用release(),方法进行连接的归还,如果用户调用conn.close(),将连接真正的释放,连接池中将出现无连接可用。
此时我们希望,即使用户调用了clos()方法,连接仍然归还给连接池。
close()方法
原有功能:释放资源;
期望功能:将当前连接归还给连接池。
说明close()没有我们希望的功能,我们将对close()方法进行增强,从而实现将连接归还给连接池的功能

//1.创建一个容器用于存储Connection对象
	private static LinkedList<Connection> pool = new LinkedList<Connection>();
	
	//2.初始化5个连接到容器中
	static int InitSize = 5;
	static {
		for(int i = 0; i < InitSize; i++) {
			Connection conn = JDBCUtils_V3.getConnection();
			//放入池子中的Connection对象(已经经过改造
			MyConnection myConnection = new MyConnection(conn, pool);
			pool.add(myConnection);
		}
	}
	
	/**
	 * 重写获取连接的方法
	 */
	@Override
	public Connection getConnection() throws SQLException {
		
		Connection conn = null;
		//3.使用前先判断
		if(pool.size() == 0) {
			//4.池子为空,则创建
			for(int i = 0; i < 5; i++) {
				conn = JDBCUtils_V3.getConnection();
				//放入池子中的Connection对象(已经经过改造
				MyConnection myConnection = new MyConnection(conn, pool);
				pool.add(myConnection);
			}
		}
		//5.从池子中获取一个连接对象Connection
		conn = pool.remove(0);
		return conn;
	}
	
	/**
	 * 归还连接对象到连接中去
	 */
	public void backConnection(Connection conn) {
		
		pool.add(conn);
		
	}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值