请帮助我理解当多个线程尝试使用同一连接时 DBCP 会起作用吗?
将为每个线程生成一个新连接?而在这种情况下使用连接池就没有任何优势了。
最佳答案
JDBC Connection
根据定义是单线程的。当一个线程从DataSource
(DBCP或任何其他实现)获取连接时,其他线程都无法接触该连接,直到该连接被释放(关闭,实际上将连接放回池中)。
DBCP 不会阻止多个线程使用同一连接。但如果多个线程同时向 DataSource
请求新连接,它将根据需要创建尽可能多的连接。如果并发线程数超过允许生成的最大配置连接数,getConnection()
将阻塞或失败。
关于java - DBCP 连接池连接生成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14224536/