栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

自动更新多个行

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

自动更新多个行

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

正如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关键字来防止出现竞争情况


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/570750.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号