重用 java.sql.Statement 对象在多个线程中同时执行多个查询是个好主意吗?
我在某处读到建议重用相同的语句对象,但它是顺序执行的。
Statement statement = con.createStatement();
现在,如果我使用这个单个语句实例来同时在多个线程中运行executeUpdate()
以执行多个查询?
请注意,它不是PreparedStatement,并且我没有得到任何ResultSet。
我认为答案取决于两种情况:
- 如果查询是互斥的,那么应该没问题。
- 如果查询处理的是同一组数据,则可能会出现问题。
我的理解正确吗?
谢谢。
最佳答案
不,这绝对不是一个好主意。其一,ResultSets
与Statement
相关联。当另一个线程突然进行新查询时,您不希望迭代 ResultSet
(ResultSet
将被关闭,至少如果驱动程序表现良好的话) )。
也没有任何迹象表明语句
是线程安全的。如果没有明确指出,则它不是线程安全的(至少在大多数情况下)。
关于java - 使用相同的语句对象在多个线程中执行多个查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25177034/