代码之家  ›  专栏  ›  技术社区  ›  Emil H

mysql connector/jdbc线程安全吗?

  •  15
  • Emil H  · 技术社区  · 15 年前

    标准的mysql jdbc驱动程序线程安全吗?具体来说,我希望在所有线程中使用一个连接,但是每个语句将只在一个线程中使用。是否有安全的场景和其他不安全的场景?你在这里有什么经验?

    3 回复  |  直到 10 年前
        1
  •  9
  •   ChssPly76    15 年前

    每个连接启动/提交事务。除非你在做一些非常具体的事情(我真的想不出一个可以诚实的例子),否则你最好有一个连接池和每个线程的连接。

        2
  •  4
  •   Chris Lampley    15 年前

    如果autocommit=1,那么多个线程共享同一个连接是非常可行的,前提是对连接的访问是同步的。如果autocommit=0,则必须通过某种互斥来控制对连接的访问,直到提交发生为止。

    除非应用程序的连接数量绝对有限,否则连接池可能是更可行的选择。

        3
  •  0
  •   Alex Kevin Panko    10 年前

    根据我最近的经验, Connection 在连接器/J 5.1.33中,对象不是线程安全的。

    我遇到了一个僵局,如 bug 67760 . 不确定这是否是一个bug,但讨论中的一个合理建议是:

    [2012年12月12日20:33]托德·法默

    请不要跨多个线程使用单个连接对象 没有适当的同步。接头/J-更重要的是, mysql客户机服务器协议-不允许并发 使用相同连接对象的操作。如果连接对象 必须跨线程共享,这是 应用程序代码作者,以确保操作正确序列化。