重用java.sql.Statement对象在多个线程中同时执行多个查询是一个好主意吗?

我读过某个地方,建议重用同一条语句对象,但这是顺序执行。

Statement statement = con.createStatement();


现在,如果我使用单个语句实例在多个线程中同时为多个查询运行executeUpdate()吗?

请注意,它不是PreparedStatement,并且没有任何ResultSet。

我认为答案取决于两种情况:


如果查询是互斥的,那么应该可以。
如果查询正在处理同一组数据,则可能存在问题。


我的理解正确吗?

谢谢。

最佳答案

不,这绝对不是一个好主意。例如,ResultSetsStatement关联。当另一个线程突然发出新查询时,您不想遍历ResultSet(至少在驱动程序运行良好的情况下,ResultSet将关闭)。

也没有地方表明Statements是线程安全的。如果没有明确指出,则它不是线程安全的(至少在大多数情况下)。

10-07 19:33
查看更多