java - DBCP 连接池连接生成

标签 java multithreading apache-commons-dbcp

请帮助我理解当多个线程尝试使用同一连接时 DBCP 会起作用吗?

将为每个线程生成一个新连接?而在这种情况下使用连接池就没有任何优势了。

最佳答案

JDBC Connection 根据定义是单线程的。当一个线程从DataSource(DBCP或任何其他实现)获取连接时,其他线程都无法接触该连接,直到该连接被释放(关闭,实际上将连接放回池中)。

DBCP 不会阻止多个线程使用同一连接。但如果多个线程同时向 DataSource 请求新连接,它将根据需要创建尽可能多的连接。如果并发线程数超过允许生成的最大配置连接数,getConnection() 将阻塞或失败。

关于java - DBCP 连接池连接生成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14224536/

相关文章:

java - 在 Java 中将十六进制字符串转换为字节数组时出现错误

java - volatile 与非 volatile

Tomcat 未关闭连接,仍处于 sleep 模式

java - 如何唯一命名一个对象

java - 为什么降序循环比升序循环快?

java - Java中default关键字的作用是什么?

java - 在 server.xml 之外定义上下文时遇到问题

c++ - 如何在 llvm-ir 中模拟 thread_local?

java - HashSet 的条目在迭代时给出 ConcurrentModificationException

java - 使用 Oracle DB 的 Java Web 应用程序超过最大空闲时间