Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Apache DBCP2连接池超过多线程时的最大连接数_Java_Multithreading_Apache Commons Dbcp - Fatal编程技术网

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

Java Apache DBCP2连接池超过多线程时的最大连接数,java,multithreading,apache-commons-dbcp,Java,Multithreading,Apache Commons Dbcp,我已经使用ApacheDBCP2库创建了一个数据库连接池。它成功地连接到数据库。部分配置如下所示: pool = new BasicDataSource(); pool.setDriverClassName("com.mysql.jdbc.Driver"); pool.setInitialSize(1); pool.setMaxTotal(2); 为了测试是否遵守了最大连接数,我设置了一个包含10个线程的executor服务,其中每个线程使用pool.getConnection()获得一个连接

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

pool = new BasicDataSource();
pool.setDriverClassName("com.mysql.jdbc.Driver");
pool.setInitialSize(1);
pool.setMaxTotal(2);
为了测试是否遵守了最大连接数,我设置了一个包含10个线程的executor服务,其中每个线程使用
pool.getConnection()
获得一个连接,并执行SQL语句
SELECT SLEEP(5)

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


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

是否捕获并记录所有可能的异常?当没有更多连接时,池可能会抛出异常而不是阻塞。是-没有异常被抑制。每个线程都成功地执行SQL语句,因此池发出的是有效的连接,一次发出的连接太多了!苏亚杰。你找到原因和解决办法了吗。