标准的MySQL JDBC驱动程序是线程安全的吗?具体而言,我想跨所有线程使用单个连接,但每个语句只能在单个线程中使用。有某些情况是安全的,而其他情况不是?你在这里有什么经验?MySQL Connector/JDBC线程安全吗?
13
A
回答
8
每个连接启动/提交事务。除非你正在做一些非常具体的事情(我不能真正想到一个例子,说实话),你最好用连接池和每个线程的连接。
4
如果autocommit = 1,那么让多个线程共享同一个连接是非常可行的,前提是对连接的访问是同步的。如果autocommit = 0,则必须通过某种互斥体控制对连接的访问,直到提交发生。
除非您的应用程序的连接数量绝对有限,否则连接池可能是更可行的选择。
0
根据我最近的经验,Connection
对象在Connector/J 5.1.33中不是线程安全的。
我遇到了bug 67760中描述的死锁情况。不知道是否是一个错误,但在讨论一个合理的建议是:
[2012年12月12日20点33分]托德农民
,请不要使用多个线程 一个连接对象而不适当的同步。连接器/ J - 更重要的是, MySQL客户端 - 服务器协议 - 不允许同时使用相同连接对象的 操作。如果必须跨线程共享Connection对象 ,则应用程序代码作者应负责确保操作正确序列化。
相关问题
- 1. java线程安全:线程安全吗?
- 2. Spring mongoTemplate线程安全吗?
- 3. Lparallel.queue线程安全吗?
- 4. BoxClient线程安全吗?
- 5. EventHubClient.SendBatchAsync - 线程安全吗?
- 6. .NET:JsonMediaTypeFormatter线程安全吗?
- 7. multiset equal_range线程安全吗?
- 8. pip线程安全吗?
- 9. com.google.cloud.datastore.Datastore线程安全吗?
- 10. WNetGetResourceInformation线程安全吗?
- 11. qsort线程安全吗?
- 12. work_queue线程安全吗?
- 13. .NET DateTime线程安全吗
- 14. DynamoDBContext线程安全吗?
- 15. 在Python线程安全吗?
- 16. java.lang.reflect.Method线程安全吗?
- 17. HttpContext.Current.Cache线程安全吗?
- 18. UIFont线程安全吗?
- 19. C#+ =线程安全吗?
- 20. Go bytes.Buffer线程安全吗?
- 21. SynchronizationContext.Post()线程安全吗?
- 22. Guava Table线程安全吗?
- 23. EPiServer线程安全吗?
- 24. 是java.sql.Connection线程安全吗?
- 25. 是CreateChildContainer()线程安全吗?
- 26. 是Thread.getStackTrace()线程安全吗?
- 27. Windows'rand_s线程安全吗?
- 28. 是DocumentBuilder.parse()线程安全吗?
- 29. 是javax.sql.DataSource线程安全吗?
- 30. putStrLn线程安全吗?
“..虽然你可以在线程之间共享连接(尤其是如果每个线程都有自己的Statement),但这通常不是一个好主意.Java API并不是真正用于线程安全的方式,并且大多数JDBC连接(包括MySQL的)一次只能处理一个查询。“http://forums.mysql.com/read.php?39,171022,171195#msg-171195 – Tim 2009-07-30 22:19:43
@Tim,是的,我之前看过这篇文章。尽管如此,它没有详细讨论任何可能的问题,所以我觉得听到别人的经验会很有趣。另外,我觉得这是一个有效的问题,属于堆栈溢出问题数据库。随意发布该链接作为答案。 :) – 2009-07-30 22:23:07
请考虑使用连接池。 – 2009-07-30 22:32:25