自动更新多个行

自动更新多个行,第1张

自动更新多个行

这里可能有很多技术和概念在起作用,当您开始考虑多线程/多请求应用程序时,事情就会变得相当棘手。

正如Iassevk所说,您应该研究使用事务来确保更新的原子性-
一个非常低级的示例是按照以下方式进行 *** 作:

...con.setAutoCommit(false);try {  while (rs.next()) {    if (conditions_to_update) {      rs.updateString(...);      rs.updateRow();    }  }  con.setAutoCommit(true);} catch (Exception ex) {  //log the exception and rollback  con.rollback();} finally {  con.close();}

然后将所有更新批处理到同一事务中。如果任何更新生成异常(例如无效值或连接在结果中途出现故障),则将全部回滚。(最后添加,因为我是它的冠军; p)

但是,这不会解决您的第二个问题,即两个试图更新同一张表的竞争方法-竞争条件。我认为这里有两种主要方法-每种方法各有优缺点。

最简单的方法是锁定表
-这将需要最少的代码更改,但有很大的缺点。与大多数应用程序一样,假设写的更多:读表:锁定表将阻止所有其他用户查看数据,并且代码可能会挂起,等待连接超时之前释放锁踢并引发异常。

更复杂的方法是确保以线程安全的方式实现执行这些更新的方法。为此:

  • 该表的所有更新都通过单个类
  • 该类实现Singleton模式,或将update方法公开为Static方法
  • 更新方法利用Synchronized关键字来防止出现竞争情况


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5561995.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-14
下一篇 2022-12-14

发表评论

登录后才能评论

评论列表(0条)

保存