是标准的MySQL JDBC驱动程序的线程安全的吗? 具体来说,我想使用跨所有线程使用一个连接,但每个语句将只在一个线程中使用。 是否有某些情况下是安全的和其他人都没有? 什么是你的经验在这里吗?
Answer 1:
交易启动/每个连接承诺。 除非你正在做一些非常具体的东西(我真的不能相信在此种道理是诚实的例子),你是一个连接池,每个线程的连接更好。
Answer 2:
如果自动提交= 1,则它是有多个线程共享同一连接非常可行,所提供的访问连接是同步的。 如果自动提交= 0,你将不得不控制访问通过某种互斥的,直到提交发生的连接。
除非你绝对是在你的应用程序可以连接数量的限制,一个连接池可能是一个更可行的选择。
Answer 3:
根据我最近的经验, Connection
对象不是线程的连接器/ J 5.1.33安全。
我跑进描述死锁情况的bug 67760 。 不知道这是一个错误,但是从讨论一个合理的建议是:
[2012年12月12日20时33分]托德农民
请不要使用跨多个线程使用一个连接对象不正确同步。 连接器/ J - 和更重要的是,MySQL客户端 - 服务器协议 - 不允许使用相同的连接对象并行操作。 如果一个连接对象必须在线程间共享,它是应用程序代码作者的责任,以确保操作正确序列化。
文章来源: Is MySQL Connector/JDBC thread safe?