在我的Java应用程序中,多个线程一次更新同一行如何获得一致性结果?
例如
current row value count =0;
thread 1 updating it to count+1=1;
thread 2 updating at the same time count+1=2
but it should not happen like this
thread 1 updating it to count+1=1;
thread 2 updating at the same time count+1=1;
both threads should not catch the same value because both are running same time
how can we achieve this in jdbc hibernate , database ??
有两种可能的方法。
您要么选择悲观方法,要么锁定行,表甚至行范围。
或者您使用版本化的实体(乐观锁定)。
也许您可以在这里找到更多信息:
https://docs.jboss.org/hibernate/orm/3.3/reference/en/html/transactions.html
问题内容: 我有一个线程需要读取平面文件并进行解析。我需要创建一个新线程来解析该文件的某些部分,然后此线程将需要更新原始实体的状态,原始实体也将通过原始线程对其进行解析和更新。如何处理这种情况? 我收到的平面文件包含以下示例记录: 首先,该文件以状态保存在数据库中。现在,所有以或开头的记录都需要在单独的线程中进行处理。成功解析后,两个线程都将尝试将数据库中此文件对象的状态更新为。在某些情况下,我得
问题内容: 我有一个线程需要读取平面文件并进行解析。我需要创建一个新线程来解析该文件的某些部分,稍后该线程将需要更新原始实体的状态,原始实体也将对其进行解析和更新。如何处理这种情况? 我收到的平面文件包含以下示例记录: 首先,该文件以状态保存在数据库中。现在,所有以或开头的记录都需要在单独的线程中进行处理。成功解析后,两个线程都将尝试将数据库中此文件对象的状态更新为。在某些情况下,我得到了。 _编
问题内容: 线程都是可运行的,并且它们拥有相同的锁。两个线程都可以运行时,它们可以锁定相同的地址吗?那是JRE错误吗? 问题答案: 该问题仅存在于线程转储中。实际上,在任何时间点,锁都仅由一个线程持有。但是,线程转储显示两个具有相同锁的不同线程,因为它不是原子的。 可以使用以下程序轻松重现该行为:
问题内容: 我有以下结构: 该方法 可以 被许多线程同时调用。该 会 抛出异常(它在后台,可能成为过时的使用一些数据)。 如果引发异常,则执行一些耗时的任务,比如说“更新”所有当前数据,并且我可以调用。 问题: 如何确保只调用 一次 ?如果我在的条目中放置了原子标志,则不能确定何时清除该标志。 我该如何解决?请注意:由于它是一个外部API,因此我无法修改,并且我正在使用装饰器模式来使用它。 问题答
我正在使用DynamoDB,我需要更新多条记录上的特定属性。用伪语言编写我的需求时,我希望执行这样一个更新:“update table persons set relationshipStatus='where personKey in(key1,key2,key3,...)”(假设personKey是DynamoDB表中的键)。 换句话说,我想用一个In子句进行更新,或者我想可以称之为批处理更新
问题内容: 如何只更新数据库上的一条记录? 桌子: 更新查询: 但是我每次只需要更新一行 问题答案: 您可以使用ROWCOUNT 或者您可以使用更新顶部