DBCP连接池连接产生

时间:2013-01-08 21:42:03

标签: java multithreading apache-commons-dbcp

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

每个线程都会产生一个新的连接?在这种情况下,使用连接池没有任何优势。

1 个答案:

答案 0 :(得分:1)

JDBC Connection按定义是单线程的。当一个线程从DataSource(DBCP或任何其他实现)获得连接时,没有其他线程可以触及该连接,直到它被释放(关闭,实际上将连接放回池中)。

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