use*_*192 10 java multithreading connection-pooling apache-commons-dbcp
我的应用程序在多个线程中执行多个查询
现在我正在为每个查询创建新连接,我想使用池来提高效率.
Apache DBCP池可以同时在多个线程中工作,还是会在每个线程上"阻塞"某些同步方法?
如果它阻止,我可以使用其他东西吗?
UPDATE
在本文中:链接 说明:
由于所有Oracle JDBC API方法都是同步的,如果两个线程同时尝试使用连接对象,则会强制其中一个等待,直到另一个完成其使用.
所以我猜DBCP将无法解决这个问题?
我也意识到在这种情况下池不会帮助我,因为每个线程都会请求连接,并且线程每次都会生成一个新连接(直到某些线程结束并返回到池的连接)
是的,Apache DBCP 可以同时在多线程中工作。当客户端代码getConnection()确保竞争条件下的正确行为时,就会发生“阻止”,例如,Connection两个并发请求不应获取一个实例getConnection()。之后客户端代码处理Connection实例。
并发场景是服务器端池的主要关注点,例如流行的 Apache DBCP。因此,我认为 DBCP 在多线程中表现良好,尽管我没有深入研究该库。
而Apache DBCP只提供了JDBC连接池,客户端代码必须Connection以正确的多线程方式使用实例,这是DBCP无法保证的。
| 归档时间: |
|
| 查看次数: |
4846 次 |
| 最近记录: |