当前位置: 技术问答>java相关
转贴:从一个ConnectionPool的实现看Design Pattern的运用
来源: 互联网 发布时间:2015-09-15
本文导语: 从一个ConnectionPool的实现看Design Pattern的运用 (一) 作者:ajoo 什么是ConnectionPool? 我们知道,JDBC提供了java.sql.Connection interface, 供我们连接不同的数据源。但是,因为与数据库建立连接是一个很大的开销,所以,我...
从一个ConnectionPool的实现看Design Pattern的运用 (一)
作者:ajoo
什么是ConnectionPool? 我们知道,JDBC提供了java.sql.Connection interface, 供我们连接不同的数据源。但是,因为与数据库建立连接是一个很大的开销,所以,我们可以把已打开的数据库连接缓存在一个连接池中,供后续的 Connection用户使用。用户使用完Connection后,再把它返还到连接池中。
对一个连接池,有许多功能上的考虑。
1. 如是否设置一个最大连接数,以保证数据库不会因同时过多的连接请求而瘫痪;
2. 是否设置一个最小连接数,以保证任何时刻都至少有若干个连接可用;
3. 是否设置一个最多的空闲连接数,空闲连接超过这个数的就关闭过多的连接;
4. 当对一个连接的请求不能被满足时,是否让请求同步等待,还是直接返回一个错误。
5. 怎样保证公平性,也就是说,一个对连接的同步请求会在一定的时间内得到x响应,而不是被饿死。
6. 连接池是用vector, list还是其他的什么Collection对象来实现。
等等等等。
下面,让我们来看看一个ConnectionPool的实现:
public class ConnectionPool
{
private final Vector pool = new Vector();
private int clients;
private int maxClients;
其他的一些连接属性如username, password, dsn等等;
public synchronized Connection getConnection()
{
如果pool里有Connection
从pool中去掉一个Connection conn;
clients++;
return conn;
否则,如果clients
作者:ajoo
什么是ConnectionPool? 我们知道,JDBC提供了java.sql.Connection interface, 供我们连接不同的数据源。但是,因为与数据库建立连接是一个很大的开销,所以,我们可以把已打开的数据库连接缓存在一个连接池中,供后续的 Connection用户使用。用户使用完Connection后,再把它返还到连接池中。
对一个连接池,有许多功能上的考虑。
1. 如是否设置一个最大连接数,以保证数据库不会因同时过多的连接请求而瘫痪;
2. 是否设置一个最小连接数,以保证任何时刻都至少有若干个连接可用;
3. 是否设置一个最多的空闲连接数,空闲连接超过这个数的就关闭过多的连接;
4. 当对一个连接的请求不能被满足时,是否让请求同步等待,还是直接返回一个错误。
5. 怎样保证公平性,也就是说,一个对连接的同步请求会在一定的时间内得到x响应,而不是被饿死。
6. 连接池是用vector, list还是其他的什么Collection对象来实现。
等等等等。
下面,让我们来看看一个ConnectionPool的实现:
public class ConnectionPool
{
private final Vector pool = new Vector();
private int clients;
private int maxClients;
其他的一些连接属性如username, password, dsn等等;
public synchronized Connection getConnection()
{
如果pool里有Connection
从pool中去掉一个Connection conn;
clients++;
return conn;
否则,如果clients
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
站内导航:
特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!