繁体   English   中英

使用相同的语句对象在多个线程中执行多个查询?

[英]using same statement object to execute multiple queries in multiple threads?

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

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

Statement statement = con.createStatement();

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

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

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

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

我的理解正确吗?

谢谢。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM