【问题标题】:Is a finally block the correct location to close a database connection? [duplicate]finally 块是关闭数据库连接的正确位置吗? [复制]
【发布时间】:2011-12-29 07:25:09
【问题描述】:

可能重复:
Is java.sql.Connection thread safe?

我已经阅读了一些教程。
他们说要通过 finally 块关闭数据库连接。
但是我有一个问题:

想象一下两个线程同时在一个线程上读取的场景 连接和一个线程完成他的工作并关闭 联系。那么对方会怎样呢?

第二个线程能完成他的任务吗?

如果我的问题无效,请告诉我,并告诉我最佳解决方案。

【问题讨论】:

  • 你不应该同时在两个线程之间共享一个java.sql.Connection
  • @erickson 这应该是一个答案,因此它可以得到投票和接受

标签: java jdbc database-connection connection-pooling


【解决方案1】:

是的,finally 块是关闭 Connection 和其他 JDBC 资源的正确方法。

您应该避免在线程之间共享此类对象;虽然它们可能是线程安全的,但它们并不打算以这种方式使用。一位JDBC specification 说:“实际上,我们希望大多数 JDBC 对象只能以单线程方式访问。”

如果您有多个线程使用同一个数据库,请创建一个连接池,并允许每个线程独占访问Connection 及其附属资源。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-27
    相关资源
    最近更新 更多