请帮助我理解当多个线程尝试使用相同的连接时,DBCP会起作用吗?
每个线程都会产生一个新的连接?在这种情况下,使用连接池没有任何优势。
答案 0 :(得分:1)
JDBC Connection
按定义是单线程的。当一个线程从DataSource
(DBCP或任何其他实现)获得连接时,没有其他线程可以触及该连接,直到它被释放(关闭,实际上将连接放回池中)。
DBCP不会阻止从多个线程使用相同的连接。但是如果多个线程同时询问DataSource
新连接,它将根据需要创建尽可能多的连接。如果并发线程数超过允许生成的最大配置连接数,getConnection()
将阻塞或失败。