是MySQL的连接器/ JDBC线程安全的?(Is MySQL Connector/JDBC thr

2019-06-27 07:31发布

是标准的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?