gpt4 book ai didi

Java多线程数据库访问

转载 作者:搜寻专家 更新时间:2023-10-30 21:23:38 24 4
gpt4 key购买 nike

<分区>

多线程 Java 应用程序确保所有线程同步访问数据库的最佳解决方案是什么?例如,每个线程代表单独的事务,首先检查数据库的值,然后根据答案插入或更新数据库中的某些字段(注意在检查、插入和提交之间应用程序正在执行其他处理)。但问题是另一个线程可能在同一张表上做同样的事情。

更具体的例子。线程 T1 启动事务,然后检查表 ENTITY_TABLE 以查找代码为“111”的条目。如果找到则更新其日期,如果未找到则插入新条目,然后提交事务。现在想象线程 T2 做同样的事情。现在有几个问题:

  1. T1 和 T2 检查数据库并没有发现任何东西,并且都插入相同的条目。
  2. T1 检查数据库,找到旧日期的条目,但在提交时 T2 已经更新了最新日期的条目。
  3. 如果我们使用缓存并同步访问缓存,我​​们会遇到一个问题:T1 获取锁检查数据库和缓存,如果没有找到则添加到缓存,释放锁,提交。 T2 做同样的事情,在缓存中找到要提交的条目。但是 T1 事务失败并被回滚。现在 T2 状态不佳,因为它应该插入到 ENTITY_TABLE 但不知道。
  4. 更多?

我正致力于通过同步创建简单的自定义缓存并解决问题 3。但也许有一些更简单的解决方案?

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com