java 数据库连接池 实例_简单的数据库连接池实例(java语言)

packagecom.rocky.pool;importjava.sql.Connection;importjava.sql.SQLException;importjava.util.concurrent.CountDownLatch;importjava.util.concurrent.atomic.AtomicInteger;public classConnectionPoolTest {static ConnectionPool pool = new ConnectionPool(10);//保证所有runner能够同时运行

static CountDownLatch start = new CountDownLatch(1);staticCountDownLatch end ;public static void main(String[] args) throwsException {int threadCount = 20;

end= newCountDownLatch(threadCount);int count = 20;

AtomicInteger got= newAtomicInteger();

AtomicInteger notGot= newAtomicInteger();for(int i=0; i

Thread thread= new Thread(new ConnectionRunner(count, got, notGot), "ConectionRunnerThread"+i);

thread.start();

}

start.countDown();

end.await();

System.out.println("total invoke: "+ (threadCount) *count);

System.out.println("got connection: "+got);

System.out.println("not got connection "+notGot);

}static class ConnectionRunner implementsRunnable{intcount ;

AtomicInteger got;

AtomicInteger notGot;public ConnectionRunner(intcount, AtomicInteger got, AtomicInteger notGot){this.count =count;this.got =got;this.notGot =notGot;

}

@Overridepublic voidrun() {try{

start.await();

}catch(InterruptedException e) {

e.printStackTrace();

}while(count > 0){try{

Connection connection= pool.fetchConnection(1000);if(connection != null){try{

connection.createStatement();

connection.commit();

}finally{

pool.releaseConnection(connection);

got.incrementAndGet();

}

}else{

notGot.incrementAndGet();

}

}catch (InterruptedException |SQLException e) {

e.printStackTrace();

}finally{

count--;

}

}

end.countDown();

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值