67,513
社区成员
发帖
与我相关
我的任务
分享
public class C3P0Connection {
public static void main(String[] args) throws PropertyVetoException {
ComboPooledDataSource cpds = new ComboPooledDataSource();
cpds.setDriverClass( "com.mysql.jdbc.Driver" ); //loads the jdbc driver
cpds.setJdbcUrl( "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT" );
cpds.setUser("root");
cpds.setPassword("123456");
cpds.setMaxPoolSize(5);
cpds.setCheckoutTimeout(3000);
for (int i = 0; i <=5 ; i++) {
long begin =System.currentTimeMillis();
try {
Connection conn = cpds.getConnection();
//conn.close();
}catch (SQLException e){
long end =System.currentTimeMillis();
System.out.println("第"+i+"个连接失败,等待时间:"+(end-begin)+"ms");
}
long end =System.currentTimeMillis();
System.out.println("第"+i+"个连接所用时间"+(end-begin)+"ms");
}
}
}
//stdout
第0个连接所用时间1970ms
第1个连接所用时间0ms
第2个连接所用时间1ms
第3个连接所用时间42ms
第4个连接所用时间0ms
DEBUG BasicResourcePool:204 - acquire test -- pool is already maxed out. [managed: 5; max: 5]
DEBUG BasicResourcePool:204 - awaitAvailable(): com.mchange.v2.c3p0.impl.NewPooledConnection@6ce6fafb
DEBUG SqlUtils:207 - Converting Throwable to SQLException...
com.mchange.v2.resourcepool.TimeoutException: A client timed out while waiting to acquire a resource from com.mchange.v2.resourcepool.BasicResourcePool@4c583ecf -- timeout at awaitAvailable()
at com.mchange.v2.resourcepool.BasicResourcePool.awaitAvailable(BasicResourcePool.java:1505)
at com.mchange.v2.resourcepool.BasicResourcePool.prelimCheckoutResource(BasicResourcePool.java:644)
at com.mchange.v2.resourcepool.BasicResourcePool.checkoutResource(BasicResourcePool.java:554)
at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool.checkoutAndMarkConnectionInUse(C3P0PooledConnectionPool.java:758)
at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool.checkoutPooledConnection(C3P0PooledConnectionPool.java:685)
at com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource.getConnection(AbstractPoolBackedDataSource.java:140)
at com.zl.lennon.database.C3P0Connection.main(C3P0Connection.java:24)
第5个连接失败,等待时间:3033ms
第5个连接所用时间3033ms
public class C3P0_Demo {
public static void main(String[] args) throws SQLException {
//创建数据库连接池对象datasource
DataSource ds=new ComboPooledDataSource("otherc3p0");
//获取连接对象
for (int i = 1; i <=8 ; i++) {
Connection conn = ds.getConnection();
System.out.println(i+":"+conn);
}
}
}
你说的我明白了,但是我这里设置checkedout为1000,这个测试代码,运行出现异常,什么原因?