重新表述的问题:我应该避免共享其实现类的实例java.sql.Connection
不同的线程之间?
Answer 1:
如果JDBC驱动程序符合规范,则在技术上是,对象是线程安全的,但是你应该避免线程之间共享连接,因为连接上的活动将意味着只有一个线程可以在同一时间做任何事情。
您应该使用连接池(如Apache的百科全书DBCP ),以确保每个线程都有自己的连接。
Answer 2:
java.sql.Connection中是一个接口。 所以,这一切都取决于驾驶员的实现,但一般而言,您应该避免分享不同的线程和使用连接池之间的连接相同。 此外,它也被建议在游泳池多于工作线程数较高的连接数。
Answer 3:
这是相当一个古老的线程,但对于那些谁正在寻找关于Microsoft SQL Server的一个答案,这里是答案:
SQLServerConnection不是线程从一个单一的连接创建可以在并发线程同时处理安全,但是多个语句。
和
SQLServerConnection实现JDBC连接到SQL Server。
从上面所有内容,您可以共享报表,但不能连接,并在情况下,你需要在每个线程的连接,你可以使用一个线程池。
阅读更多在这里
Answer 4:
甲骨文JDBC和多线程文档:
因为所有的Oracle JDBC API方法是同步的,如果两个线程尝试同时使用的连接对象,然后一个将被迫等到另一个完成它的使用。
因此,它可能是在甲骨文的情况下安全的,但并发访问将从瓶颈困扰。
Answer 5:
我们有ArrayOutOfBoundsException它的pooleddatasource一个WebSphere语句缓存,我们不得不禁用缓存。
我们有这样的挡住自己治疗。
所有这一切,因为当前访问的连接,以便通过真实的生活实践的结论,是你必须这样做。
文章来源: Is java.sql.Connection thread safe?