Java Apache DBCP2连接池超过多线程时的最大连接数

时间:2017-01-16 13:00:01

标签: java multithreading apache-commons-dbcp

我使用Apache DBCP2库创建了一个数据库连接池。它成功连接到数据库。部分配置如下所示:

pool = new BasicDataSource();
pool.setDriverClassName("com.mysql.jdbc.Driver");
pool.setInitialSize(1);
pool.setMaxTotal(2);

为了测试是否遵守了最大连接数,我设置了一个包含10个线程的执行程序服务,其中每个线程使用pool.getConnection()获取连接并执行SQL语句SELECT SLEEP(5)

由于最大连接数为2,我预计此测试大约需要25秒,因为一次只有两个线程可以执行该命令。但是,池为所有线程提供连接,因此测试只需大约5秒钟。

BasicDataSource不是线程安全的吗?或者如果是,如何在最大连接数被使用时将其配置为阻止其他线程?

0 个答案:

没有答案