我的应用程序在多个线程中执行多个查询。使用Apache DBCP的多线程
现在我正在为每个查询创建新的连接,我想使用池来提高效率。
Apache DBCP池是否可以同时在多个线程中工作,或者它会在每个线程的某些同步方法上“阻塞”?
如果封锁,我可以使用别的东西吗?
UPDATE
本文内容:link说:
因为所有的Oracle JDBC API方法是同步的,如果两个线程 尝试同时使用的连接对象,然后一会 被迫等到另一个人完成使用。
所以我想DBCP将无法处理?
我也意识到在这种情况下池不会帮助我,因为每个线程都会要求连接,并且每次线程都会生成一个新连接(直到某些线程结束并返回连接到池)
为了补充下面的很好的答案,getConnection()'可能会阻塞的唯一时间是如果你的池中没有更多的'Connection'(即:它们当前正在与你的数据库执行交易)。但是一旦事务完成,'Connection'将返回到你的池中,'getConnection()'将返回一个有效的'Connection'实例。尽管所有这些将取决于您的游泳池的配置。 – Jeach